60 lines
1.6 KiB
Plaintext
60 lines
1.6 KiB
Plaintext
proc %counter.always.104.0 (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) {
|
|
0:
|
|
%1 = prb i4$ %count
|
|
%count.shadow = var i4 %1
|
|
br %init
|
|
init:
|
|
%clk.prb = prb i1$ %clk
|
|
wait %check, %clk
|
|
check:
|
|
%2 = prb i4$ %count
|
|
st i4* %count.shadow, %2
|
|
%clk.prb1 = prb i1$ %clk
|
|
%3 = const i1 0
|
|
%4 = eq i1 %clk.prb, %3
|
|
%5 = neq i1 %clk.prb1, %3
|
|
%posedge = and i1 %4, %5
|
|
br %posedge, %init, %event
|
|
event:
|
|
%reset.prb = prb i1$ %reset
|
|
%6 = neq i1 %reset.prb, %3
|
|
%7 = const time 0s 1d
|
|
br %6, %if_false, %if_true
|
|
if_true:
|
|
%8 = const i4 0
|
|
drv i4$ %count, %8, %7
|
|
br %0
|
|
if_false:
|
|
%load.prb = prb i1$ %load
|
|
%9 = neq i1 %load.prb, %3
|
|
br %9, %if_false1, %if_true1
|
|
if_true1:
|
|
%data.prb = prb i4$ %data
|
|
drv i4$ %count, %data.prb, %7
|
|
br %0
|
|
if_false1:
|
|
%up_down.prb = prb i1$ %up_down
|
|
%10 = neq i1 %up_down.prb, %3
|
|
%11 = const i32 0
|
|
%12 = const i32 1
|
|
br %10, %if_false2, %if_true2
|
|
if_true2:
|
|
%count.shadow.ld = ld i4* %count.shadow
|
|
%zext = inss i32 %11, i4 %count.shadow.ld, 0, 4
|
|
%13 = add i32 %zext, %12
|
|
%14 = exts i4, i32 %13, 0, 4
|
|
drv i4$ %count, %14, %7
|
|
br %0
|
|
if_false2:
|
|
%count.shadow.ld1 = ld i4* %count.shadow
|
|
%zext1 = inss i32 %11, i4 %count.shadow.ld1, 0, 4
|
|
%15 = sub i32 %zext1, %12
|
|
%16 = exts i4, i32 %15, 0, 4
|
|
drv i4$ %count, %16, %7
|
|
br %0
|
|
}
|
|
|
|
entity @counter (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) {
|
|
inst %counter.always.104.0 (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count)
|
|
}
|