diff --git a/.github/workflows/main.old b/.github/workflows/main.old new file mode 100644 index 00000000..4e90cb42 --- /dev/null +++ b/.github/workflows/main.old @@ -0,0 +1,49 @@ +name: Regression Tests + +on: + push: + branches: + - master + - ral_dev + pull_request: + branches: + - master + - ral_dev + workflow_dispatch: + +jobs: + + + tests: + + name: Python ${{matrix.python-version}} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - python-version: 3.8 + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{matrix.python-version}} + uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python-version}} + + - name: Install Python testing dependencies + run: | + pip install tox tox-gh-actions + + - name: Install Icarus Verilog + run: | + sudo apt install -y --no-install-recommends iverilog + + - name: Install GHDL + run: | + sudo apt install -y --no-install-recommends ghdl-mcode ghdl + + - name: Test + run: | + tox diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4e90cb42..4c8df617 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,38 +12,54 @@ on: workflow_dispatch: jobs: - - tests: - - name: Python ${{matrix.python-version}} - runs-on: ubuntu-latest + name: Python ${{matrix.python-version}} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - include: - - python-version: 3.8 - + python-version: [3.8] + os: [ubuntu-latest, macos-latest, windows-latest] + steps: - uses: actions/checkout@v2 + - name: Set up Python ${{matrix.python-version}} uses: actions/setup-python@v2 with: python-version: ${{matrix.python-version}} - name: Install Python testing dependencies - run: | - pip install tox tox-gh-actions + run: pip install tox tox-gh-actions - name: Install Icarus Verilog - run: | - sudo apt install -y --no-install-recommends iverilog + if: runner.os == 'Linux' + run: sudo apt-get update && sudo apt install -y --no-install-recommends iverilog + + - name: Install Icarus Verilog on macOS + if: runner.os == 'macOS' + run: brew install icarus-verilog - - name: Install GHDL - run: | - sudo apt install -y --no-install-recommends ghdl-mcode ghdl + - name: Install Icarus Verilog on Windows + if: runner.os == 'Windows' + run: choco install iverilog - - name: Test - run: | - tox + - name: Install GHDL + if: runner.os == 'Linux' || runner.os == 'Windows' + uses: ghdl/setup-ghdl@v1.2.1 + with: + version: 5.0.1 + backend: mcode + investigate: true + + - name: Install GHDL on macOS + if: runner.os == 'macOS' + uses: ghdl/setup-ghdl@v1.2.1 + with: + version: 5.0.1 + backend: llvm + investigate: true + + - name: Run Tests + run: tox diff --git a/examples/TinyALU/hdl/vhdl/tinyalu.vhd b/examples/TinyALU/hdl/vhdl/tinyalu.vhd index 0b19206c..f6027aff 100644 --- a/examples/TinyALU/hdl/vhdl/tinyalu.vhd +++ b/examples/TinyALU/hdl/vhdl/tinyalu.vhd @@ -93,7 +93,7 @@ CLOCK: clk <= '1' after 1 us when clk = '0' else '0' after 1 us when clk = '1'; --- purpose: This block shunts the start signal to the correct block. +-- purpose: This block shunts the start signal to the correct block. -- The multiply only sees the start signal when op(2) is '1' -- type : combinational -- inputs : op(2),start diff --git a/examples/TinyALU/tinyalu_utils.py b/examples/TinyALU/tinyalu_utils.py index 43cefea5..e40cd1a5 100644 --- a/examples/TinyALU/tinyalu_utils.py +++ b/examples/TinyALU/tinyalu_utils.py @@ -1,4 +1,5 @@ import cocotb +from cocotb.clock import Clock from cocotb.triggers import FallingEdge from cocotb.queue import QueueEmpty, Queue import enum @@ -118,6 +119,7 @@ async def result_mon_bfm(self): prev_done = done def start_bfm(self): + cocotb.start_soon(Clock(self.dut.clk, 2000000, unit="ps").start()) cocotb.start_soon(self.driver_bfm()) cocotb.start_soon(self.cmd_mon_bfm()) cocotb.start_soon(self.result_mon_bfm()) diff --git a/examples/TinyALU_reg/dump.vcd b/examples/TinyALU_reg/dump.vcd deleted file mode 100644 index 31312054..00000000 --- a/examples/TinyALU_reg/dump.vcd +++ /dev/null @@ -1,5249 +0,0 @@ -$version Generated by VerilatedVcd $end -$timescale 1ps $end - - $scope module top $end - $var wire 8 # A [7:0] $end - $var wire 8 $ B [7:0] $end - $var wire 32 + addr [31:0] $end - $var wire 1 ' clk $end - $var wire 3 % op [2:0] $end - $var wire 32 . rdata [31:0] $end - $var wire 1 * read $end - $var wire 1 ( reset_n $end - $var wire 16 / result [15:0] $end - $var wire 1 & start $end - $var wire 1 ) valid $end - $var wire 32 , wdata [31:0] $end - $var wire 4 - wmask [3:0] $end - $scope module tinyalu $end - $var wire 8 0 A [7:0] $end - $var wire 32 N! ADDR_OFFSET [31:0] $end - $var wire 32 M! ADDR_WIDTH [31:0] $end - $var wire 8 1 B [7:0] $end - $var wire 5 H CMD_op_q [4:0] $end - $var wire 5 D CMD_op_wdata [4:0] $end - $var wire 1 C CMD_op_we $end - $var wire 7 G CMD_reserved_q [6:0] $end - $var wire 7 F CMD_reserved_wdata [6:0] $end - $var wire 1 E CMD_reserved_we $end - $var wire 1 I CMD_start_q [0:0] $end - $var wire 32 M! DATA_WIDTH [31:0] $end - $var wire 32 O! RESERVED_VALUE [31:0] $end - $var wire 16 L RESULT_data_wdata [15:0] $end - $var wire 8 J SRC_data0_q [7:0] $end - $var wire 8 K SRC_data1_q [7:0] $end - $var wire 32 8 addr [31:0] $end - $var wire 1 4 clk $end - $var wire 1 M done $end - $var wire 1 A done_aax $end - $var wire 1 B done_mult $end - $var wire 3 2 op [2:0] $end - $var wire 3 N op_from_rf [2:0] $end - $var wire 32 ; rdata [31:0] $end - $var wire 1 7 read $end - $var wire 1 5 reset_n $end - $var wire 16 < result [15:0] $end - $var wire 16 = result_aax [15:0] $end - $var wire 16 > result_mult [15:0] $end - $var wire 1 3 start $end - $var wire 1 @ start_mult $end - $var wire 1 ? start_single $end - $var wire 1 6 valid $end - $var wire 32 9 wdata [31:0] $end - $var wire 4 : wmask [3:0] $end - $scope module and_add_xor $end - $var wire 8 O A [7:0] $end - $var wire 8 P B [7:0] $end - $var wire 1 R clk $end - $var wire 1 U done $end - $var wire 3 Q op [2:0] $end - $var wire 1 S reset_n $end - $var wire 16 V result [15:0] $end - $var wire 1 T start $end - $upscope $end - $scope module mult $end - $var wire 8 W A [7:0] $end - $var wire 8 X B [7:0] $end - $var wire 8 _ a_int [7:0] $end - $var wire 8 ` b_int [7:0] $end - $var wire 1 Z clk $end - $var wire 1 ] done $end - $var wire 1 c done1 $end - $var wire 1 d done2 $end - $var wire 1 e done3 $end - $var wire 16 a mult1 [15:0] $end - $var wire 16 b mult2 [15:0] $end - $var wire 3 Y op [2:0] $end - $var wire 1 [ reset_n $end - $var wire 16 ^ result [15:0] $end - $var wire 1 \ start $end - $upscope $end - $scope module regblock $end - $var wire 32 N! ADDR_OFFSET [31:0] $end - $var wire 32 M! ADDR_WIDTH [31:0] $end - $var wire 1 H! CMD_decode $end - $var wire 1 /! CMD_done_anded $end - $var wire 1 .! CMD_done_next [0:0] $end - $var wire 1 0! CMD_done_ored $end - $var wire 1 -! CMD_done_q [0:0] $end - $var wire 1 m CMD_done_wdata [0:0] $end - $var wire 1 1! CMD_done_xored $end - $var wire 1 &! CMD_op_anded $end - $var wire 5 %! CMD_op_next [4:0] $end - $var wire 1 '! CMD_op_ored $end - $var wire 5 k CMD_op_q [4:0] $end - $var wire 1 (! CMD_op_xored $end - $var wire 32 K! CMD_q [31:0] $end - $var wire 32 ?! CMD_rdata [31:0] $end - $var wire 1 4! CMD_reserved_anded $end - $var wire 9 3! CMD_reserved_next [8:0] $end - $var wire 1 5! CMD_reserved_ored $end - $var wire 9 2! CMD_reserved_q [8:0] $end - $var wire 9 o CMD_reserved_wdata [8:0] $end - $var wire 1 n CMD_reserved_we $end - $var wire 1 6! CMD_reserved_xored $end - $var wire 1 *! CMD_start_anded $end - $var wire 1 )! CMD_start_next [0:0] $end - $var wire 1 +! CMD_start_ored $end - $var wire 1 l CMD_start_q [0:0] $end - $var wire 1 ,! CMD_start_xored $end - $var wire 1 J! CMD_sw_rd $end - $var wire 1 I! CMD_sw_wr $end - $var wire 32 M! DATA_WIDTH [31:0] $end - $var wire 1 "! RESULT_data_anded $end - $var wire 16 !! RESULT_data_next [15:0] $end - $var wire 1 #! RESULT_data_ored $end - $var wire 16 ~ RESULT_data_q [15:0] $end - $var wire 16 j RESULT_data_wdata [15:0] $end - $var wire 1 $! RESULT_data_xored $end - $var wire 1 D! RESULT_decode $end - $var wire 32 G! RESULT_q [31:0] $end - $var wire 32 >! RESULT_rdata [31:0] $end - $var wire 1 F! RESULT_sw_rd $end - $var wire 1 E! RESULT_sw_wr $end - $var wire 1 w SRC_data0_anded $end - $var wire 8 v SRC_data0_next [7:0] $end - $var wire 1 x SRC_data0_ored $end - $var wire 8 h SRC_data0_q [7:0] $end - $var wire 1 y SRC_data0_xored $end - $var wire 1 { SRC_data1_anded $end - $var wire 8 z SRC_data1_next [7:0] $end - $var wire 1 | SRC_data1_ored $end - $var wire 8 i SRC_data1_q [7:0] $end - $var wire 1 } SRC_data1_xored $end - $var wire 1 @! SRC_decode $end - $var wire 32 C! SRC_q [31:0] $end - $var wire 32 =! SRC_rdata [31:0] $end - $var wire 1 B! SRC_sw_rd $end - $var wire 1 A! SRC_sw_wr $end - $var wire 32 r addr [31:0] $end - $var wire 1 f clk $end - $var wire 32 u rdata [31:0] $end - $var wire 1 q read $end - $var wire 1 g resetn $end - $var wire 32 9! sw_mask [31:0] $end - $var wire 32 -0? -0@ -0A -0B -0C -b00000 D -0E -b0000000 F -b0000000 G -b00000 H -0I -b00000000 J -b00000000 K -b0000000000000000 L -0M -b000 N -b00000000 O -b00000000 P -b000 Q -1R -1S -0T -0U -b0000000000000000 V -b00000000 W -b00000000 X -b000 Y -1Z -1[ -0\ -0] -b0000000000000000 ^ -b00000000 _ -b00000000 ` -b0000000000000000 a -b0000000000000000 b -0c -0d -0e -1f -1g -b00000000 h -b00000000 i -b0000000000000000 j -b00000 k -0l -0m -1n -b000000000 o -0p -0q -b00000000000000000000000000000000 r -b00000000000000000000000000000000 s -b0000 t -b00000000000000000000000000000000 u -b00000000 v -0w -0x -0y -b00000000 z -0{ -0| -0} -b0000000000000000 ~ -b0000000000000000 !! -0"! -0#! -0$! -b00000 %! -0&! -0'! -0(! -0)! -0*! -0+! -0,! -0-! -0.! -0/! -00! -01! -b000000000 2! -b000000000 3! -04! -05! -06! -07! -08! -b00000000000000000000000000000000 9! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ! -b00000000000000000000000000000000 ?! -1@! -0A! -0B! -b00000000000000000000000000000000 C! -0D! -0E! -0F! -b00000000000000000000000000000000 G! -0H! -0I! -0J! -b00000000000000000000000000000000 K! -b00000000000000000000000000000100 L! -b00000000000000000000000000100000 M! -b00000000000000000000000000000000 N! -b00000000000000000000000000000001 O! -#500 -0' -04 -0R -0Z -0f -#1000 -1' -14 -1R -1Z -1f -#1500 -0' -1) -b00000000000000000000000000000100 + -b1111 - -04 -16 -b00000000000000000000000000000100 8 -b1111 : -0R -0Z -0f -1p -b00000000000000000000000000000100 r -b1111 t -17! -b11111111111111111111111111111111 9! -0@! -1H! -1I! -#2000 -1' -14 -1R -1Z -1f -#2500 -0' -0) -04 -06 -0R -0Z -0f -0p -07! -0I! -#3000 -1' -14 -1R -1Z -1f -#3500 -0' -1) -b00000000000000000000000000000000 + -b00000000000000000001111010110011 , -04 -16 -b00000000000000000000000000000000 8 -b00000000000000000001111010110011 9 -0R -0Z -0f -1p -b00000000000000000000000000000000 r -b00000000000000000001111010110011 s -17! -b00000000000000000001111010110011 :! -b00000000000000000001111010110011 -1R -1Z -b0001010011111010 ^ -1f -#8500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#9000 -1' -14 -1R -1Z -1f -#9500 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000011010001 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000011010001 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000011010001 u -18! -b00000000000000000000000011010001 ;! -b00000000000000000000000011010001 >! -1D! -1F! -0H! -#10000 -1' -14 -1R -1Z -1f -#10500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#11000 -1' -14 -1R -1Z -1f -#11500 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000011011011000 ^ -1f -#18500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#19000 -1' -14 -1R -1Z -1f -#19500 -0' -1) -b00000000000000000000000000000010 + -04 -16 -b00000000000000000000000000000010 8 -0R -0Z -0f -1p -b00000000000000000000000000000010 r -18! -1D! -1F! -0H! -#20000 -1' -14 -1R -1Z -1f -#20500 -0' -0) -04 -06 -0R -0Z -0f -0p -08! -0F! -#21000 -1' -14 -1R -1Z -1f -#21500 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0001111011000010 ^ -1f -#28500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#29000 -1' -14 -1R -1Z -1f -#29500 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000011100001 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000011100001 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000011100001 u -18! -b00000000000000000000000011100001 ;! -b00000000000000000000000011100001 >! -1D! -1F! -0H! -#30000 -1' -14 -1R -1Z -1f -#30500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#31000 -1' -14 -1R -1Z -1f -#31500 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000110000111000 ^ -1d -1f -b0000110000111000 j -b0000110000111000 ~ -b0000110000111000 !! -b00000000000000000000110000111000 G! -#38500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#39000 -1' -14 -1R -1Z -1c -1f -#39500 -0' -1) -b00000000000000000000000000100100 . -04 -16 -b00000000000000000000000000100100 ; -0R -0Z -0f -1p -b00000000000000000000000000100100 u -18! -b00000000000000000000000000100100 ;! -b00000000000000000000000000100100 ?! -1J! -#40000 -1' -b00000000000000000000000001100100 . -14 -b00000000000000000000000001100100 ; -1B -1M -1R -1Z -1] -1f -1m -b00000000000000000000000001100100 u -1-! -1.! -1/! -10! -11! -b00000000000000000000000001100100 ;! -b00000000000000000000000001100100 ?! -b00000000000000000000000001100100 K! -#40500 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#41000 -1' -14 -0B -0M -1R -1Z -0] -0c -0d -0e -1f -0m -0-! -0.! -0/! -00! -01! -b00000000000000000000000000100100 K! -#41500 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000110000111000 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000110000111000 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000110000111000 u -18! -b00000000000000000000110000111000 ;! -b00000000000000000000110000111000 >! -1D! -1F! -0H! -#42000 -1' -14 -1R -1Z -1e -1f -#42500 -0' -04 -0R -0Z -0f -#42501 -1' -b00000000000000000000000000000000 . -b0000000000000000 / -14 -b00000000000000000000000000000000 ; -b0000000000000000 < -b0000000000000000 = -b0000000000000000 > -0@ -b00000 H -0I -b00000000 J -b00000000 K -b000 N -b00000000 O -b00000000 P -b000 Q -1R -b0000000000000000 V -b00000000 W -b00000000 X -b000 Y -1Z -0\ -b0000000000000000 ^ -b00000000 _ -b00000000 ` -b0000000000000000 a -b0000000000000000 b -0e -1f -b00000000 h -b00000000 i -b0000000000000000 j -b00000 k -0l -b00000000000000000000000000000000 u -0x -0| -b0000000000000000 ~ -b0000000000000000 !! -0#! -0$! -0'! -0(! -0*! -0+! -0,! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -b00000000000000000000000000000000 C! -b00000000000000000000000000000000 G! -b00000000000000000000000000000000 K! -#43000 -#43001 -0' -04 -0R -0Z -0f -#43501 -1' -14 -1R -1Z -1f -#44001 -0' -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -08! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 ! -1D! -1F! -0H! -#52501 -1' -14 -1R -1Z -1f -#53001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#53501 -1' -14 -1R -1Z -1f -#54001 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000000000000001 ^ -1f -#61001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#61501 -1' -14 -1R -1Z -1f -#62001 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000000010 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000000010 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000000010 u -18! -b00000000000000000000000000000010 ;! -b00000000000000000000000000000010 >! -1D! -1F! -0H! -#62501 -1' -14 -1R -1Z -1f -#63001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#63501 -1' -14 -1R -1Z -1f -#64001 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000000000000010 ^ -1f -#71001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#71501 -1' -14 -1R -1Z -1f -#72001 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000000011 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000000011 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000000011 u -18! -b00000000000000000000000000000011 ;! -b00000000000000000000000000000011 >! -1D! -1F! -0H! -#72501 -1' -14 -1R -1Z -1f -#73001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#73501 -1' -14 -1R -1Z -1f -#74001 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000000000000110 ^ -1f -#81001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#81501 -1' -14 -1R -1Z -1f -#82001 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000000101 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000000101 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000000101 u -18! -b00000000000000000000000000000101 ;! -b00000000000000000000000000000101 >! -1D! -1F! -0H! -#82501 -1' -14 -1R -1Z -1f -#83001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#83501 -1' -14 -1R -1Z -1f -#84001 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000000000001111 ^ -1f -#91001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#91501 -1' -14 -1R -1Z -1f -#92001 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000001000 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000001000 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000001000 u -18! -b00000000000000000000000000001000 ;! -b00000000000000000000000000001000 >! -1D! -1F! -0H! -#92501 -1' -14 -1R -1Z -1f -#93001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#93501 -1' -14 -1R -1Z -1f -#94001 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000000000101000 ^ -1f -#101001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#101501 -1' -14 -1R -1Z -1f -#102001 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000001101 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000001101 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000001101 u -18! -b00000000000000000000000000001101 ;! -b00000000000000000000000000001101 >! -1D! -1F! -0H! -#102501 -1' -14 -1R -1Z -1f -#103001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#103501 -1' -14 -1R -1Z -1f -#104001 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0000000001101000 ^ -1f -#111001 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#111501 -1' -14 -1R -1Z -1f -#112001 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000010101 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000010101 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000010101 u -18! -b00000000000000000000000000010101 ;! -b00000000000000000000000000010101 >! -1D! -1F! -0H! -#112501 -1' -14 -1R -1Z -1f -#113001 -0' -04 -0R -0Z -0f -#113002 -1' -b00000000000000000000000000000000 . -b0000000000000000 / -14 -b00000000000000000000000000000000 ; -b0000000000000000 < -b0000000000000000 = -b0000000000000000 > -0? -0A -b00000 H -0I -b00000000 J -b00000000 K -0M -b000 N -b00000000 O -b00000000 P -b000 Q -1R -0T -0U -b0000000000000000 V -b00000000 W -b00000000 X -b000 Y -1Z -b0000000000000000 ^ -b00000000 _ -b00000000 ` -b0000000000000000 a -b0000000000000000 b -1f -b00000000 h -b00000000 i -b0000000000000000 j -b00000 k -0l -0m -b00000000000000000000000000000000 u -0x -0y -0| -0} -b0000000000000000 ~ -b0000000000000000 !! -0#! -0$! -0'! -0(! -0*! -0+! -0,! -0-! -0.! -0/! -00! -01! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -b00000000000000000000000000000000 C! -b00000000000000000000000000000000 G! -b00000000000000000000000000000000 K! -#113501 -#113502 -0' -04 -0R -0Z -0f -#114002 -1' -14 -1R -1Z -1f -#114502 -0' -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -08! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b1010011010011101 ^ -1f -#121502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#122002 -1' -14 -1R -1Z -1f -#122502 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000110011110 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000110011110 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000110011110 u -18! -b00000000000000000000000110011110 ;! -b00000000000000000000000110011110 >! -1D! -1F! -0H! -#123002 -1' -14 -1R -1Z -1f -#123502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#124002 -1' -14 -1R -1Z -1f -#124502 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0001100010011100 ^ -1f -#131502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#132002 -1' -14 -1R -1Z -1f -#132502 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000100100 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000100100 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000100100 u -18! -b00000000000000000000000000100100 ;! -b00000000000000000000000000100100 >! -1D! -1F! -0H! -#133002 -1' -14 -1R -1Z -1f -#133502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#134002 -1' -14 -1R -1Z -1f -#134502 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0010101010011000 ^ -1f -#141502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#142002 -1' -14 -1R -1Z -1f -#142502 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000000000000101010 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000000000000101010 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000000000000101010 u -18! -b00000000000000000000000000101010 ;! -b00000000000000000000000000101010 >! -1D! -1F! -0H! -#143002 -1' -14 -1R -1Z -1f -#143502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 >! -0F! -#144002 -1' -14 -1R -1Z -1f -#144502 -0' -1) -0* -b00000000000000000000000000000100 + -b00000000000000000000000000000000 , -04 -16 -07 -b00000000000000000000000000000100 8 -b00000000000000000000000000000000 9 -0R -0Z -0f -1p -0q -b00000000000000000000000000000100 r -b00000000000000000000000000000000 s -17! -b00000000000000000000000000000000 :! -b00000000000000000000000000000000 -1R -1Z -b0001100101101110 ^ -1d -1f -b0001100101101110 j -b0001100101101110 ~ -b0001100101101110 !! -b00000000000000000001100101101110 G! -#151502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#152002 -1' -14 -1R -1Z -1c -1f -#152502 -0' -1) -b00000000000000000000000000100100 . -04 -16 -b00000000000000000000000000100100 ; -0R -0Z -0f -1p -b00000000000000000000000000100100 u -18! -b00000000000000000000000000100100 ;! -b00000000000000000000000000100100 ?! -1J! -#153002 -1' -b00000000000000000000000001100100 . -14 -b00000000000000000000000001100100 ; -1B -1M -1R -1Z -1] -1f -1m -b00000000000000000000000001100100 u -1-! -1.! -1/! -10! -11! -b00000000000000000000000001100100 ;! -b00000000000000000000000001100100 ?! -b00000000000000000000000001100100 K! -#153502 -0' -0) -b00000000000000000000000000000000 . -04 -06 -b00000000000000000000000000000000 ; -0R -0Z -0f -0p -b00000000000000000000000000000000 u -08! -b00000000000000000000000000000000 ;! -b00000000000000000000000000000000 ?! -0J! -#154002 -1' -14 -0B -0M -1R -1Z -0] -0c -0d -0e -1f -0m -0-! -0.! -0/! -00! -01! -b00000000000000000000000000100100 K! -#154502 -0' -1) -b00000000000000000000000000000010 + -b00000000000000000001100101101110 . -04 -16 -b00000000000000000000000000000010 8 -b00000000000000000001100101101110 ; -0R -0Z -0f -1p -b00000000000000000000000000000010 r -b00000000000000000001100101101110 u -18! -b00000000000000000001100101101110 ;! -b00000000000000000001100101101110 >! -1D! -1F! -0H! -#155002 -1' -14 -1R -1Z -1e -1f -#155502 -0' -04 -0R -0Z -0f -#155503 diff --git a/pyuvm/s06_reporting_classes.py b/pyuvm/s06_reporting_classes.py index 35cb2a0a..76e5d0e7 100644 --- a/pyuvm/s06_reporting_classes.py +++ b/pyuvm/s06_reporting_classes.py @@ -20,9 +20,7 @@ ) from cocotb.utils import want_color_output else: - from cocotb._utils import want_color_output from cocotb.logging import ( - SimColourLogFormatter, SimLogFormatter, SimTimeContextFilter, ) @@ -38,7 +36,14 @@ ) -class PyuvmFormatter(SimColourLogFormatter): +# Determine the base class based on cocotb version +if cocotb_version_info < (2, 0): + _PyuvmFormatterBase = SimColourLogFormatter +else: + _PyuvmFormatterBase = SimLogFormatter + + +class PyuvmFormatter(_PyuvmFormatterBase): def __init__(self, full_name): """ :param full_name: The full name of the object @@ -57,10 +62,13 @@ def format(self, record): record.msg = new_msg name_temp = record.name record.name = f"{record.pathname}({record.lineno})" - if want_color_output(): - formatted_msg = super().format(record) + if cocotb_version_info < (2, 0): + if want_color_output(): + formatted_msg = super().format(record) + else: + formatted_msg = SimLogFormatter.format(self, record) else: - formatted_msg = SimLogFormatter.format(self, record) + formatted_msg = super().format(record) record.msg = msg_temp record.name = name_temp return formatted_msg diff --git a/pyuvm/s13_uvm_component.py b/pyuvm/s13_uvm_component.py index 37a344bc..1ddc45d6 100644 --- a/pyuvm/s13_uvm_component.py +++ b/pyuvm/s13_uvm_component.py @@ -11,7 +11,7 @@ if cocotb_version_info < (2, 0): from cocotb.log import SimColourLogFormatter, SimTimeContextFilter else: - from cocotb.logging import SimColourLogFormatter, SimTimeContextFilter + from cocotb.logging import SimLogFormatter, SimTimeContextFilter # 13.1.1 @@ -520,7 +520,10 @@ def __init__(self): # Don't let the handler interfere with logger level configdb_handler.setLevel(logging.NOTSET) # Make log messages look like UVM messages - configdb_formatter = SimColourLogFormatter() + if cocotb_version_info < (2, 0): + configdb_formatter = SimColourLogFormatter() + else: + configdb_formatter = SimLogFormatter() configdb_handler.setFormatter(configdb_formatter) self.logger_holder.add_logging_handler(configdb_handler) self.logger_holder.logger.propagate = False diff --git a/requirements.txt b/requirements.txt index c18626d6..4cc4fed6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ pylint pytest sphinx -cocotb<1.9.0 +cocotb<3,>=1.6.0 diff --git a/setup.py b/setup.py index 5bc278c8..6038ecb2 100755 --- a/setup.py +++ b/setup.py @@ -24,5 +24,5 @@ ], packages=setuptools.find_packages(), python_requires=">=3.6", - install_requires="cocotb>=1.6.0,<2.0", + install_requires="cocotb>=1.6.0,<3", ) diff --git a/tox.ini b/tox.ini index 41e86da4..4d80ddf1 100644 --- a/tox.ini +++ b/tox.ini @@ -40,6 +40,9 @@ platform = setenv = PYTHONPATH = {toxinidir}:{toxinidir}/tests/pytests COCOTB_REDUCED_LOG_FMT=1 + # Use environment variables for Windows builds instead of deprecated flags + windows: CC=x86_64-w64-mingw32-gcc + windows: CXX=x86_64-w64-mingw32-g++ passenv = SIM @@ -51,10 +54,6 @@ deps = pytest flake8 -install_command = - windows: python -m pip install --global-option build_ext --global-option --compiler=mingw32 {opts} {packages} - python -m pip install {opts} {packages} - commands = flake8 pyuvm make pytests diff --git a/tox.old b/tox.old new file mode 100644 index 00000000..41e86da4 --- /dev/null +++ b/tox.old @@ -0,0 +1,94 @@ +[tox] +skip_missing_interpreters=true +# when changing this list, adapt CONTRIBUTING.md accordingly: +#envlist = py{35,36,37,38,39}-{linux,macos,windows},docs +#envlist = py{37, 38}-{linux,macos,windows} +# Updated to support range of Python versions +envlist = py{35,36,37,38,39,310,311,312,313}-{linux,macos,windows} + +# for the requires key +minversion = 3.2.0 +isolated_build = true + +# virtualenv is used by tox; versions below 16.1.0 cause a DeprecationWarning +# to be shown for all code which uses virtualenv, which is the case for all code +# we run through tox. (https://github.com/pypa/virtualenv/pull/1064) +requires = virtualenv >= 16.1 + +[flake8] +exclude = + pyuvm/__init__.py + tests + examples + pyuvm/s27_uvm_reg_pkg.py + + +# Ignoring star import issues +ignore = F405,F403 + + +[testenv] +allowlist_externals= + make + bash + +platform = + linux: linux|cygwin + macos: darwin + windows: win32 + +setenv = + PYTHONPATH = {toxinidir}:{toxinidir}/tests/pytests + COCOTB_REDUCED_LOG_FMT=1 + +passenv = + SIM + LM_LICENSE_FILE + PYTHONPATH + +deps = + cocotb + pytest + flake8 + +install_command = + windows: python -m pip install --global-option build_ext --global-option --compiler=mingw32 {opts} {packages} + python -m pip install {opts} {packages} + +commands = + flake8 pyuvm + make pytests + make cocotb_tests + +tox_fail_on_error = true +# needed for coverage to work +# usedevelop=True + +# Note: this target is *not* used by Read The Docs, it runs sphinx-build +# directly. Hence, all special build steps here are only relevant for +# local builds, not for RTD builds. Add all build steps which should be executed +# in RTD builds as Python code into the conf.py file. + +[gh-actions] +python = + 3.5: py35 + 3.6: py36 + 3.7: py37 + 3.8: py38 + 3.9: py39 + 3.10: py310 + 3.11: py311 + 3.12: py312 + 3.13: py313 + + +[gh-actions:env] +OS = + ubuntu-latest: linux + ubuntu-20.04: linux + ubuntu-18.04: linux + ubuntu-16.04: linux + macos-latest: macos + macos-10.15: macos + windows-latest: windows + windows-2019: windows