support other I/O configurations

This commit is contained in:
Miodrag Milanovic 2024-05-07 09:06:10 +02:00
parent 34f08bc639
commit 41ae513d60
3 changed files with 14 additions and 6 deletions

View File

@ -6,3 +6,10 @@ module \$__BEYOND_OBUF (output PAD, input I);
NX_IOB_O _TECHMAP_REPLACE_ (.IO(PAD), .I(I), .C(1'b1));
endmodule
module \$__BEYOND_TOBUF (output PAD, input I, input C);
NX_IOB _TECHMAP_REPLACE_ (.IO(PAD), .I(I), .C(C));
endmodule
module \$__BEYOND_IOBUF (output PAD, input I, output O, output C);
NX_IOB _TECHMAP_REPLACE_ (.IO(PAD), .I(I), .O(O), .C(C));
endmodule

View File

@ -292,10 +292,10 @@ struct SynthNanoXplorePass : public ScriptPass
run("nx_carry");
}
if (help_mode || iopad) {
run("iopadmap -bits -outpad $__BEYOND_OBUF I:PAD -inpad $__BEYOND_IBUF O:PAD A:top", "(only if '-iopad')");
run("iopadmap -bits -outpad $__BEYOND_OBUF I:PAD -toutpad $__BEYOND_TOBUF C:I:PAD -inpad $__BEYOND_IBUF O:PAD -tinoutpad $__BEYOND_IOBUF C:O:I:PAD A:top", "(only if '-iopad')");
run("techmap -map +/nanoxplore/io_map.v");
run("attrmvcp -attr LOC t:NX_IOB_O n:*");
run("attrmvcp -attr LOC -driven t:NX_IOB_I n:*");
run("attrmvcp -attr LOC t:NX_IOB_O t:NX_IOB n:*");
run("attrmvcp -attr LOC -driven t:NX_IOB_I t:NX_IOB n:*");
}
run("opt -fast");
}

View File

@ -4,9 +4,10 @@ proc
tribuf
flatten
synth
equiv_opt -assert -map +/nanoxplore/cells_sim.v -map +/simcells.v synth_nanoxplore # equivalency check
equiv_opt -assert -map +/nanoxplore/cells_sim.v -map +/simcells.v synth_nanoxplore -iopad # equivalency check
design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design)
cd tristate # Constrain all select calls below inside the top module
#Internal cell type used. Need support it.
select -assert-count 1 t:$_TBUF_
select -assert-none t:$_TBUF_ %% t:* %D
select -assert-count 1 t:NX_IOB
select -assert-count 2 t:NX_IOB_I
select -assert-none t:NX_IOB t:NX_IOB_I %% t:* %D