|
|
|
|
|
""" |
|
|
μμ : |
|
|
cd waca_unet_space |
|
|
python tools/prepare_samples.py --root /data/ICCAD_2023/hidden-real-circuit-data \ |
|
|
--configs_path configs/began_iccad_fake \ |
|
|
--dataset iccad_hidden \ |
|
|
--indices 0 1 2 3 4 |
|
|
|
|
|
- build_dataset_iccad_hidden / build_dataset_iccad_real μ μ΄μ©ν΄μ |
|
|
(input, target, casename)μ κ°μ Έμ¨ λ€, inputλ§ samples/ ν΄λμ μ μ₯. |
|
|
- inputμ IRDropDatasetμμ λ°ννλ (C,H,W) ν
μ(μ κ·ν μλ£)λ₯Ό κ·Έλλ‘ npyλ‘ μ μ₯. |
|
|
""" |
|
|
import os |
|
|
import argparse |
|
|
import numpy as np |
|
|
import torch |
|
|
|
|
|
from config import get_config |
|
|
from ir_dataset import ( |
|
|
build_dataset_iccad_hidden, |
|
|
build_dataset_iccad_real, |
|
|
) |
|
|
|
|
|
|
|
|
def parse_args(): |
|
|
p = argparse.ArgumentParser() |
|
|
p.add_argument( |
|
|
"--root", |
|
|
type=str, |
|
|
help="ICCAD hidden/real root path. μ: /data/ICCAD_2023/hidden-real-circuit-data or /data/ICCAD_2023/real-circuit-data", |
|
|
default='/data/ICCAD_2023/hidden-real-circuit-data', |
|
|
) |
|
|
p.add_argument( |
|
|
"--dataset", |
|
|
type=str, |
|
|
choices=["iccad_hidden", "iccad_real"], |
|
|
default="iccad_real", |
|
|
) |
|
|
p.add_argument( |
|
|
"--img_size", |
|
|
type=int, |
|
|
default=384, |
|
|
) |
|
|
p.add_argument( |
|
|
"--in_ch", |
|
|
type=int, |
|
|
default=25, |
|
|
) |
|
|
p.add_argument( |
|
|
"--configs_path", |
|
|
type=str, |
|
|
default="/workspace/IR_Drop_prior_study/XICCAD/configs/cfirst/began_iccad_fake/stats_1um.json", |
|
|
help="stats_1um.json μ΄ λ€μ΄μλ ν΄λ", |
|
|
) |
|
|
p.add_argument( |
|
|
"--unit", |
|
|
type=str, |
|
|
default="1um", |
|
|
) |
|
|
p.add_argument( |
|
|
"--indices", |
|
|
type=int, |
|
|
nargs="+", |
|
|
default=[0, 1, 2, 3, 4], |
|
|
help="μμ μνλ‘ λ½μ dataset μΈλ±μ€λ€", |
|
|
) |
|
|
p.add_argument( |
|
|
"--out_dir", |
|
|
type=str, |
|
|
default="samples", |
|
|
help="npyλ₯Ό μ μ₯ν λλ ν 리", |
|
|
) |
|
|
return p.parse_args() |
|
|
|
|
|
|
|
|
def main(): |
|
|
args = parse_args() |
|
|
os.makedirs(args.out_dir, exist_ok=True) |
|
|
|
|
|
|
|
|
norm_config = get_config( |
|
|
args.unit, |
|
|
configs_path=args.configs_path, |
|
|
dataset_name="began_iccad_fake", |
|
|
) |
|
|
|
|
|
common_kwargs = dict( |
|
|
img_size=args.img_size, |
|
|
in_ch=args.in_ch, |
|
|
train=False, |
|
|
use_raw=False, |
|
|
input_norm_type="z_score", |
|
|
target_norm_type="raw", |
|
|
target_layers=[], |
|
|
use_pdn_density=True, |
|
|
use_pad_distance=True, |
|
|
use_comprehensive_feature=True, |
|
|
norm_config=norm_config, |
|
|
return_case=True, |
|
|
interpolation="lanczos", |
|
|
) |
|
|
|
|
|
if args.dataset == "iccad_hidden": |
|
|
dataset = build_dataset_iccad_hidden( |
|
|
root_path=args.root, |
|
|
**common_kwargs, |
|
|
) |
|
|
else: |
|
|
dataset = build_dataset_iccad_real( |
|
|
root_path=args.root, |
|
|
**common_kwargs, |
|
|
) |
|
|
|
|
|
|
|
|
if isinstance(dataset, (tuple, list)) and len(dataset) == 2: |
|
|
dataset = dataset[1] |
|
|
|
|
|
print(f"Dataset length: {len(dataset)}") |
|
|
|
|
|
for idx in args.indices: |
|
|
if idx >= len(dataset): |
|
|
print(f"[WARN] index {idx} is out of range, skip.") |
|
|
continue |
|
|
|
|
|
sample = dataset[idx] |
|
|
if len(sample) == 3: |
|
|
x, y, casename = sample |
|
|
else: |
|
|
x, y = sample |
|
|
casename = f"idx{idx}" |
|
|
|
|
|
if isinstance(x, torch.Tensor): |
|
|
x_np = x.detach().cpu().numpy() |
|
|
else: |
|
|
x_np = np.asarray(x) |
|
|
|
|
|
out_name = f"{casename}_input.npy" |
|
|
out_path = os.path.join(args.out_dir, out_name) |
|
|
np.save(out_path, x_np) |
|
|
print(f"Saved: {out_path} (shape={x_np.shape})") |
|
|
|
|
|
print("Done.") |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
main() |
|
|
|