V
Vlad Ciubotariu
Guest
Hi all,
I'm working on a formal verification tool that starts with the rtl netlist
produced by precision. The netlist contains some operators that are left a
blackboxes, some of them are shown below:
or_10u_10u(a(9:0) : INPUT, d : OUTPUT)
or_5u_5u(a(4:0) : INPUT, d : OUTPUT)
add_16u_16u_16u_0(cin : INPUT, a(15:0) : INPUT, b(15:0) : INPUT, d(15:0) : OUTPUT, cout : OUTPUT)
eq_8u_8u(a(7:0) : INPUT, b(7:0) : INPUT, d : OUTPUT)
eq_24u_24u(a(23:0) : INPUT, b(23:0) : INPUT, d : OUTPUT)
or_13u_13u(a(12:0) : INPUT, d : OUTPUT)
eq_9u_9u(a(8:0) : INPUT, b(8:0) : INPUT, d : OUTPUT)
or_9u_9u(a(8:0) : INPUT, d : OUTPUT)
eq_28u_28u(a(27:0) : INPUT, b(27:0) : INPUT, d : OUTPUT)
mult_32u_32u_32u(a(31:0) : INPUT, b(31:0) : INPUT, d(31:0) : OUTPUT)
eq_3u_3u(a(2:0) : INPUT, b(2:0) : INPUT, d : OUTPUT)
xor_3u_3u(a(2:0) : INPUT, d : OUTPUT)
eq_10u_10u(a(9:0) : INPUT, b(9:0) : INPUT, d : OUTPUT)
eq_23u_23u(a(22:0) : INPUT, b(22:0) : INPUT, d : OUTPUT)
eq_29u_29u(a(28:0) : INPUT, b(28:0) : INPUT, d : OUTPUT)
eq_26u_26u(a(25:0) : INPUT, b(25:0) : INPUT, d : OUTPUT)
eq_30u_30u(a(29:0) : INPUT, b(29:0) : INPUT, d : OUTPUT)
case_6_15_1_15(ctrl(5:0) : INPUT, data(14:0) : INPUT, default_data(0:0) : INPUT, out(0:0) : OUTPUT)
case_6_20_1_2(ctrl(5:0) : INPUT, data(19:0) : INPUT, default_data(0:0) :
INPUT, out(0:0) : OUTPUT)
The precision manual specifies how these mnemonics are derived but it does
not give functional descriptions. I'm particularly asymmetric operators
such as 'case' above.
For a 'case' operator the netlist would have this information:
(cell case_6_15_1_1 (cellType GENERIC)
(property (rename EX_GENERIC "$GENERIC") (string "modgen_case_op"))
(property (rename EX_minterms "$minterms") (string "( 100001 100010 100011 100100 100101 100110 100111 000000 000001 000011 000100 110101 110110 110111 000110 )"))
(property (rename EX_cell_index "$cell_index") (string "1"))
(property (rename EX_size "$size") (string "1"))
(property (rename EX_select_size "$select_size") (string "6"))
(property (rename EX_num_minterms "$num_minterms") (string "15"))
(property (rename EX_full_case "$full_case") (string "false"))
(property (rename EX_default_dc "$default_dc") (string "false"))
(property (rename EX_onehot "$onehot") (string "false"))
(view INTERFACE (viewType NETLIST)
(interface
(port (array (rename ctrl "ctrl(5:0)") 6 )(direction INPUT))
(port (array (rename data "data(14:0)") 15 )(direction INPUT))
(port (array (rename default_data "default_data(0:0)") 1 )(direction INPUT))
(port (array (rename out "out(0:0)") 1 )(direction OUTPUT)))))
The midterms have length 6, which is the number of control inputs, and
there are 15 of them, exactly the number of data inputs.
Does anybody have any know-how about the library OPERATORS that precision
uses? Or what would work best to find out what the blackboxes do?
thanks,
vlad
I'm working on a formal verification tool that starts with the rtl netlist
produced by precision. The netlist contains some operators that are left a
blackboxes, some of them are shown below:
or_10u_10u(a(9:0) : INPUT, d : OUTPUT)
or_5u_5u(a(4:0) : INPUT, d : OUTPUT)
add_16u_16u_16u_0(cin : INPUT, a(15:0) : INPUT, b(15:0) : INPUT, d(15:0) : OUTPUT, cout : OUTPUT)
eq_8u_8u(a(7:0) : INPUT, b(7:0) : INPUT, d : OUTPUT)
eq_24u_24u(a(23:0) : INPUT, b(23:0) : INPUT, d : OUTPUT)
or_13u_13u(a(12:0) : INPUT, d : OUTPUT)
eq_9u_9u(a(8:0) : INPUT, b(8:0) : INPUT, d : OUTPUT)
or_9u_9u(a(8:0) : INPUT, d : OUTPUT)
eq_28u_28u(a(27:0) : INPUT, b(27:0) : INPUT, d : OUTPUT)
mult_32u_32u_32u(a(31:0) : INPUT, b(31:0) : INPUT, d(31:0) : OUTPUT)
eq_3u_3u(a(2:0) : INPUT, b(2:0) : INPUT, d : OUTPUT)
xor_3u_3u(a(2:0) : INPUT, d : OUTPUT)
eq_10u_10u(a(9:0) : INPUT, b(9:0) : INPUT, d : OUTPUT)
eq_23u_23u(a(22:0) : INPUT, b(22:0) : INPUT, d : OUTPUT)
eq_29u_29u(a(28:0) : INPUT, b(28:0) : INPUT, d : OUTPUT)
eq_26u_26u(a(25:0) : INPUT, b(25:0) : INPUT, d : OUTPUT)
eq_30u_30u(a(29:0) : INPUT, b(29:0) : INPUT, d : OUTPUT)
case_6_15_1_15(ctrl(5:0) : INPUT, data(14:0) : INPUT, default_data(0:0) : INPUT, out(0:0) : OUTPUT)
case_6_20_1_2(ctrl(5:0) : INPUT, data(19:0) : INPUT, default_data(0:0) :
INPUT, out(0:0) : OUTPUT)
The precision manual specifies how these mnemonics are derived but it does
not give functional descriptions. I'm particularly asymmetric operators
such as 'case' above.
For a 'case' operator the netlist would have this information:
(cell case_6_15_1_1 (cellType GENERIC)
(property (rename EX_GENERIC "$GENERIC") (string "modgen_case_op"))
(property (rename EX_minterms "$minterms") (string "( 100001 100010 100011 100100 100101 100110 100111 000000 000001 000011 000100 110101 110110 110111 000110 )"))
(property (rename EX_cell_index "$cell_index") (string "1"))
(property (rename EX_size "$size") (string "1"))
(property (rename EX_select_size "$select_size") (string "6"))
(property (rename EX_num_minterms "$num_minterms") (string "15"))
(property (rename EX_full_case "$full_case") (string "false"))
(property (rename EX_default_dc "$default_dc") (string "false"))
(property (rename EX_onehot "$onehot") (string "false"))
(view INTERFACE (viewType NETLIST)
(interface
(port (array (rename ctrl "ctrl(5:0)") 6 )(direction INPUT))
(port (array (rename data "data(14:0)") 15 )(direction INPUT))
(port (array (rename default_data "default_data(0:0)") 1 )(direction INPUT))
(port (array (rename out "out(0:0)") 1 )(direction OUTPUT)))))
The midterms have length 6, which is the number of control inputs, and
there are 15 of them, exactly the number of data inputs.
Does anybody have any know-how about the library OPERATORS that precision
uses? Or what would work best to find out what the blackboxes do?
thanks,
vlad