# vl2mv counter.v # version: 0.2 # date: 11:12:24 12/11/95 (PST) .model counter # I/O ports .names _n0 1 .subckt counter_cell bit0 carry_in=_n0 carry_out=out0 .subckt counter_cell bit1 carry_in=out0 carry_out=out1 .subckt counter_cell bit2 carry_in=out1 carry_out=out2 # conflict arbitrators # non-blocking assignments # latches # quasi-continuous assignment .end .model counter_cell # I/O ports .inputs carry_in .outputs carry_out # assign carry_out = value & carry_in # value & carry_in .names value carry_in _n2 .def 0 1 1 1 .names _n2 carry_out$raw_n1 - =_n2 # value = 0 .names value$raw_n3 0 # non-blocking assignments for initial .names _n6 0 .names value _n6 _n7 .def 0 0 1 1 1 0 1 .names _n7 _n5 0 1 1 0 .names _n5 _n4 1 1 0 0 # value = carry_in .names carry_in value$_n4_n9$true - =carry_in .names _nc 1 .names value _nc _nd .def 0 0 1 1 1 0 1 .names _nd _nb 0 1 1 0 .names _nb _na 1 1 0 0 .names _n10 0 # carry_in == 0 .names carry_in _n10 _n11 .def 0 0 1 1 1 0 1 .names _n11 _nf 0 1 1 0 .names _nf _n13 - =_nf # value = 1 .names value$_nf_n14$true 1 # value = 0 .names value$_nf_n15$false 0 # if/else (carry_in == 0) .names value$_nf_n14$true value$_nf_n15$false _nf value$_nf$raw_n17 0 - 1 0 1 - 1 1 - 0 0 0 - 1 0 1 # case (value ) .names value$_nf$raw_n17 value _na value$_na$raw_n1d 0 - 1 0 1 - 1 1 - 0 0 0 - 1 0 1 .names value$_n4_n9$true value$_na$raw_n1d _n4 value$_n4$raw_n1f 0 - 1 0 1 - 1 1 - 0 0 0 - 1 0 1 # conflict arbitrators .names _n4 _na _n13 _n24 .def 0 1 - - 1 0 1 1 1 0 1 0 1 .names _n24 value$_n4$raw_n1f value _n25 1 0 - 0 1 1 - 1 0 - 0 0 0 - 1 1 .names carry_out$raw_n1 carry_out 0 0 1 1 # non-blocking assignments # latches .r value$raw_n3 value 0 0 1 1 .latch _n25 value # quasi-continuous assignment .end