Forum Discussion
Altera_Forum
Honored Contributor
13 years agoHi Josy,
Thanks to your response I realized what I was missing! If I add a synthesis keep constraint inside the mux_2to1.vhd component to the combinatorial inputs, i.e.,
attribute keep : boolean;
attribute keep of sel : signal is true;
attribute keep of d : signal is true;
Then the SDC netlist preserves these nodes, and get_pins will return matches to the sel, d[0], and d[1] combinatorial input signals, eg.,
tcl> set col * *d*}]
tcl> query_collection -report -all $col
u1|sel~buf0|combout
u1|d~buf0|combout
u1|d~buf0|combout
u1|sel~buf0|datad
pin_sel~input|o
u1|d~buf0|datad
pin_d~input|o
u1|d~buf0|datac
pin_d~input|o
pin_sel~input|i
pin_d~input|i
pin_d~input|i
\g1:u2|d~buf0|combout
\g1:u2|d~buf0|combout
\g1:u2|sel~buf0|combout
\g1:u2|d~buf0|datac
\g1:u2|d~buf0|datad
\g1:u2|sel~buf0|datac
u3|u1|d~buf0|combout
u3|u1|d~buf0|combout
u3|u1|sel~buf0|combout
u3|u1|d~buf0|datad
u3|u1|d~buf0|datad
u3|u1|sel~buf0|datac
u3|u2|sel~buf0|combout
u3|u2|d~buf0|combout
u3|u2|d~buf0|combout
u3|u2|sel~buf0|datac
u3|u2|d~buf0|datad
u3|u2|d~buf0|datac
u4|\g1:0:u1|sel~buf0|combout
u4|\g1:0:u1|d~buf0|combout
u4|\g1:0:u1|d~buf0|combout
u4|\g1:0:u1|sel~buf0|datad
u4|\g1:0:u1|d~buf0|datad
u4|\g1:0:u1|d~buf0|datac
u4|\g1:1:u1|sel~buf0|combout
u4|\g1:1:u1|d~buf0|combout
u4|\g1:1:u1|d~buf0|combout
u4|\g1:1:u1|sel~buf0|datad
u4|\g1:1:u1|d~buf0|datad
u4|\g1:1:u1|d~buf0|datad
u4|\g1:2:u1|d~buf0|combout
u4|\g1:2:u1|d~buf0|combout
u4|\g1:2:u1|sel~buf0|combout
u4|\g1:2:u1|d~buf0|datad
u4|\g1:2:u1|d~buf0|datad
u4|\g1:2:u1|sel~buf0|datad
u4|\g1:3:u1|sel~buf0|combout
u4|\g1:3:u1|d~buf0|combout
u4|\g1:3:u1|d~buf0|combout
u4|\g1:3:u1|sel~buf0|datac
u4|\g1:3:u1|d~buf0|datac
u4|\g1:3:u1|d~buf0|datac
and now a get_fanins call can be used on sel, d[0], or d[1] to find the input mapping, eg.,
tcl> tmq_find_comb_input sel
u1|sel~buf0|combout connects to pin_sel
u1|sel~buf0|datad connects to pin_sel
\g1:u2|sel~buf0|combout connects to pin_sel
\g1:u2|sel~buf0|datac connects to pin_sel
u3|u1|sel~buf0|combout connects to pin_sel
u3|u1|sel~buf0|datac connects to pin_sel
u3|u2|sel~buf0|combout connects to pin_sel
u3|u2|sel~buf0|datac connects to pin_sel
u4|\g1:0:u1|sel~buf0|combout connects to pin_sel
u4|\g1:0:u1|sel~buf0|datad connects to pin_sel
u4|\g1:1:u1|sel~buf0|combout connects to pin_sel
u4|\g1:1:u1|sel~buf0|datad connects to pin_sel
u4|\g1:2:u1|sel~buf0|combout connects to pin_sel
u4|\g1:2:u1|sel~buf0|datad connects to pin_sel
u4|\g1:3:u1|sel~buf0|combout connects to pin_sel
u4|\g1:3:u1|sel~buf0|datac connects to pin_sel
tcl> tmq_find_comb_input d
u1|d~buf0|combout connects to pin_d
u1|d~buf0|datac connects to pin_d
\g1:u2|d~buf0|combout connects to pin_d
\g1:u2|d~buf0|datac connects to pin_d
u3|u1|d~buf0|combout connects to pin_d
u3|u1|d~buf0|datad connects to pin_d
u3|u2|d~buf0|combout connects to pin_d
u3|u2|d~buf0|datad connects to pin_d
u4|\g1:0:u1|d~buf0|combout connects to pin_d
u4|\g1:0:u1|d~buf0|datac connects to pin_d
u4|\g1:1:u1|d~buf0|combout connects to pin_d
u4|\g1:1:u1|d~buf0|datad connects to pin_d
u4|\g1:2:u1|d~buf0|combout connects to pin_d
u4|\g1:2:u1|d~buf0|datad connects to pin_d
u4|\g1:3:u1|d~buf0|combout connects to pin_d
u4|\g1:3:u1|d~buf0|datac connects to pin_d
tcl> tmq_find_comb_input d
u1|d~buf0|combout connects to pin_d
u1|d~buf0|datad connects to pin_d
\g1:u2|d~buf0|combout connects to pin_d
\g1:u2|d~buf0|datad connects to pin_d
u3|u1|d~buf0|combout connects to pin_d
u3|u1|d~buf0|datad connects to pin_d
u3|u2|d~buf0|combout connects to pin_d
u3|u2|d~buf0|datac connects to pin_d
u4|\g1:0:u1|d~buf0|combout connects to pin_d
u4|\g1:0:u1|d~buf0|datad connects to pin_d
u4|\g1:1:u1|d~buf0|combout connects to pin_d
u4|\g1:1:u1|d~buf0|datad connects to pin_d
u4|\g1:2:u1|d~buf0|combout connects to pin_d
u4|\g1:2:u1|d~buf0|datad connects to pin_d
u4|\g1:3:u1|d~buf0|combout connects to pin_d
u4|\g1:3:u1|d~buf0|datac connects to pin_d
where here I've called get_fanins on both of the nodes matched by get_pins, just to check that both paths map back to a common input, and to show that the dataa/datab/datac/datad mapping to each instance differs. Cheers, Dave NOTE: I updated the zip file above with the latest version.