File tree Expand file tree Collapse file tree 4 files changed +127
-0
lines changed Expand file tree Collapse file tree 4 files changed +127
-0
lines changed Original file line number Diff line number Diff line change 1+ TARGET =$(shell ls * .py | grep -v test | grep -v parsetab.py)
2+ ARGS =
3+
4+ PYTHON =python3
5+ # PYTHON=python
6+ # OPT=-m pdb
7+ # OPT=-m cProfile -s time
8+ # OPT=-m cProfile -o profile.rslt
9+
10+ .PHONY : all
11+ all : test
12+
13+ .PHONY : run
14+ run :
15+ $(PYTHON ) $(OPT ) $(TARGET ) $(ARGS )
16+
17+ .PHONY : test
18+ test :
19+ $(PYTHON ) -m pytest -vv
20+
21+ .PHONY : check
22+ check :
23+ $(PYTHON ) $(OPT ) $(TARGET ) $(ARGS ) > tmp.v
24+ iverilog -tnull -Wall tmp.v
25+ rm -f tmp.v
26+
27+ .PHONY : clean
28+ clean :
29+ rm -rf * .pyc __pycache__ parsetab.py .cache * .out * .png * .dot tmp.v uut.vcd
Original file line number Diff line number Diff line change 1+ from __future__ import absolute_import
2+ from __future__ import print_function
3+ import sys
4+ import os
5+
6+ # the next line can be removed after installation
7+ sys .path .insert (0 , os .path .dirname (os .path .dirname (
8+ os .path .dirname (os .path .dirname (os .path .abspath (__file__ ))))))
9+
10+ from veriloggen import *
11+
12+
13+ def mkLed ():
14+ m = Module ('blinkled' )
15+ width = m .Parameter ('WIDTH' , 8 )
16+ a = m .Input ('A' , 32 )
17+ b = m .Output ('B' , width )
18+
19+ b .assign (a [32 - width :32 ])
20+
21+ return m
22+
23+ if __name__ == '__main__' :
24+ led = mkLed ()
25+ verilog = led .to_verilog ()
26+ print (verilog )
Original file line number Diff line number Diff line change 1+ from __future__ import absolute_import
2+ from __future__ import print_function
3+ import veriloggen
4+ import op_reverse
5+
6+ expected_verilog = """
7+ module blinkled #
8+ (
9+ parameter WIDTH = 8
10+ )
11+ (
12+ input [32-1:0] A,
13+ output [WIDTH-1:0] B
14+ );
15+
16+ assign B = A[31:32-WIDTH];
17+
18+ endmodule
19+ """
20+
21+ def test ():
22+ veriloggen .reset ()
23+ test_module = op_reverse .mkLed ()
24+ code = test_module .to_verilog ()
25+
26+ from pyverilog .vparser .parser import VerilogParser
27+ from pyverilog .ast_code_generator .codegen import ASTCodeGenerator
28+ parser = VerilogParser ()
29+ expected_ast = parser .parse (expected_verilog )
30+ codegen = ASTCodeGenerator ()
31+ expected_code = codegen .visit (expected_ast )
32+
33+ assert (expected_code == code )
Original file line number Diff line number Diff line change @@ -383,6 +383,45 @@ def __lshift__(self, r):
383383 def __rshift__ (self , r ):
384384 return Srl (self , r )
385385
386+ def __radd__ (self , l ):
387+ return Plus (l , self )
388+
389+ def __rsub__ (self , l ):
390+ return Minus (l , self )
391+
392+ def __rpow__ (self , l ):
393+ return Power (l , self )
394+
395+ def __rmul__ (self , l ):
396+ return Times (l , self )
397+
398+ def __rdiv__ (self , l ):
399+ return Divide (l , self )
400+
401+ def __rtruediv__ (self , l ):
402+ return Divide (l , self )
403+
404+ def __rfloordiv__ (self , l ):
405+ return Divide (l , self )
406+
407+ def __rmod__ (self , l ):
408+ return Mod (l , self )
409+
410+ def __rand__ (self , l ):
411+ return And (l , self )
412+
413+ def __ror__ (self , l ):
414+ return Or (l , self )
415+
416+ def __rxor__ (self , l ):
417+ return Xor (l , self )
418+
419+ def __rlshift__ (self , l ):
420+ return Sll (l , self )
421+
422+ def __rrshift__ (self , l ):
423+ return Srl (l , self )
424+
386425 def __neg__ (self ):
387426 return Uminus (self )
388427
You can’t perform that action at this time.
0 commit comments