Commit a0badba0 by sakundu

Updated scripts and bp_quad inputs

Signed-off-by: sakundu <sakundu@ucsd.edu>
parent 5e4272d9
module fakeram_32x32_dp
(
QA,
CLKA,
CENA,
AA,
CLKB,
CENB,
AB,
DB,
STOV,
EMAA,
EMASA,
EMAB,
RET1N
);
input CLKA;
input CLKB;
input CENA;
input [4:0] AA;
output [31:0] QA;
input CENB;
input [4:0] AB;
input [31:0] DB;
input STOV;
input [2:0] EMAA;
input EMASA;
input [2:0] EMAB;
input RET1N;
assign STOV = 1'b0;
assign EMASA = 1'b0;
assign EMAA = 3'b010; // Extra margin adjustment A: Default for 0.8V
assign EMAB = 3'b010; // Extra margin adjustment B: Default for 0.8V
assign RET1N = 1'b1;
wire [31:0] QB;
wire [31:0] QA1;
fakeram45_32x32 rmod_a
(
.rd_out(QA1),
.addr_in(AA),
.we_in(~CENA),
.wd_in(DB), //dummy
.w_mask_in(DB), //dummy
.clk(CLKA),
.ce_in(CENA)
);
fakeram45_32x32 rmod_b
(
.rd_out(QB), //dummy
.addr_in(AB),
.we_in(CENB),
.wd_in(DB),
.w_mask_in(DB),
.clk(CLKB),
.ce_in(CENB)
);
genvar k;
generate
for (k = 0; k < 32; k=k+1) begin
assign QA[k] = (~CENB & QB[k]) | (CENB & QA1[k]);
end
endgenerate
endmodule
set rtl_all { set rtl_all {
./rtl/bsg_chip_block.sv2v.v ./rtl/bsg_chip_block.sv2v.v
./rtl/fakeram45_32x32_dp.v
} }
...@@ -44,6 +44,7 @@ set target_library $list_lib ...@@ -44,6 +44,7 @@ set target_library $list_lib
set_db hdl_flatten_complex_port true set_db hdl_flatten_complex_port true
set_db hdl_record_naming_style %s_%s set_db hdl_record_naming_style %s_%s
set_db auto_ungroup none set_db auto_ungroup none
set_db hdl_error_on_blackbox true
if {![info exist ::env(PHY_SYNTH)] || $::env(PHY_SYNTH) == 0} { if {![info exist ::env(PHY_SYNTH)] || $::env(PHY_SYNTH) == 0} {
......
...@@ -62,7 +62,7 @@ proc extract_report {stage} { ...@@ -62,7 +62,7 @@ proc extract_report {stage} {
timeDesign -postCTS -prefix ${stage} timeDesign -postCTS -prefix ${stage}
} elseif { $stage == "postRoute" } { } elseif { $stage == "postRoute" } {
timeDesign -postRoute -prefix ${stage} timeDesign -postRoute -prefix ${stage}
} elseif { $stage == "postRouetOpt" } { } elseif { $stage == "postRouteOpt" } {
timeDesign -postRoute -prefix ${stage} timeDesign -postRoute -prefix ${stage}
} elseif { $stage == "postSynth" } { } elseif { $stage == "postSynth" } {
timeDesign -prePlace -prefix ${stage} timeDesign -prePlace -prefix ${stage}
......
...@@ -113,11 +113,11 @@ while { $i < $lcount } { ...@@ -113,11 +113,11 @@ while { $i < $lcount } {
} elseif { $ism == 1 } { } elseif { $ism == 1 } {
setAddStripeMode -extend_to_closest_target none setAddStripeMode -extend_to_closest_target none
setAddStripeMode -inside_cell_only true setAddStripeMode -inside_cell_only true
foreach mcell [dbget [dbget top.insts.cell.subClass block -p2 ].cell.name -u] { foreach mcell [dbget [dbget top.insts.cell.subClass block -p2 ].cell.name -u -e] {
addStripe -layer $lname -direction $dir -nets $nets -width $wdth -spacing $spc \ addStripe -layer $lname -direction $dir -nets $nets -width $wdth -spacing $spc \
-start_offset $sofst -set_to_set_distance $ptch -master $mcell -start_offset $sofst -set_to_set_distance $ptch -master $mcell
} }
foreach inst [dbget [dbget top.insts.cell.subClass block -p2 ].name ] { foreach inst [dbget [dbget top.insts.cell.subClass block -p2 ].name -e ] {
createRouteBlk -inst $inst -cover -layer $prevLayer -name mcro_blk createRouteBlk -inst $inst -cover -layer $prevLayer -name mcro_blk
} }
} elseif { $isam == 1 } { } elseif { $isam == 1 } {
......
...@@ -9,7 +9,14 @@ plc_file = sys.argv[1] ...@@ -9,7 +9,14 @@ plc_file = sys.argv[1]
pb_file = sys.argv[2] pb_file = sys.argv[2]
place_tcl = sys.argv[3] place_tcl = sys.argv[3]
print(f'PLC:\t{plc_file}\nPB:\t{pb_file}\nTCL:\t{place_tcl}') origin_x = 0
origin_y = 0
print(f"Length of Argument: {len(sys.argv)}")
if len(sys.argv) == 6:
origin_x = float(sys.argv[4])
origin_y = float(sys.argv[5])
print(f'PLC:\t{plc_file}\nPB:\t{pb_file}\nTCL:\t{place_tcl}\nOrigin X:{origin_x} Y:{origin_y}')
orientMap = { orientMap = {
"N" : "R0", "N" : "R0",
...@@ -94,8 +101,8 @@ for line in lines: ...@@ -94,8 +101,8 @@ for line in lines:
if id_pattern.match(words[0]) and (len(words) == 5): if id_pattern.match(words[0]) and (len(words) == 5):
idx = int(words[0]) idx = int(words[0])
if node_list[idx].pb_type == '"MACRO"': if node_list[idx].pb_type == '"MACRO"':
x = float(words[1]) - float(node_list[idx].width)/2.0 x = float(words[1]) - float(node_list[idx].width)/2.0 + origin_x
y = float(words[2]) - float(node_list[idx].height)/2.0 y = float(words[2]) - float(node_list[idx].height)/2.0 + origin_y
orient = orientMap[words[3]] orient = orientMap[words[3]]
isFixed = words[4] isFixed = words[4]
macro_name = node_list[idx].name.replace('_[', '\[') macro_name = node_list[idx].name.replace('_[', '\[')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment