vhd2vl: fix the tests

The testing scheme for vhd2vl is sensitive to subtle shifts in
iverilog's parenthesization choices, meaning that the golden test
outputs require constant maintenance.

The patch previously applied in order to deal with this situation is
no longer sufficient, so a patch which is sufficient has been added.

Also, the `buildTargets` and `checkTarget` attributes have been set,
so future benign failures of this sort can be dealt with through
`doCheck=false` in a pinch.
main
Adam Joseph 2 years ago
parent 84f1dcef10
commit 5d44c9a222
  1. 16
      pkgs/applications/science/electronics/vhd2vl/default.nix
  2. 35
      pkgs/applications/science/electronics/vhd2vl/test.patch

@ -1,6 +1,5 @@
{ lib, stdenv
, fetchFromGitHub
, fetchpatch
, bison
, flex
, verilog
@ -19,12 +18,8 @@ stdenv.mkDerivation rec {
};
patches = lib.optionals (!stdenv.isAarch64) [
# fix build with verilog 11.0 - https://github.com/ldoolitt/vhd2vl/pull/15
# for some strange reason, this is not needed for aarch64
(fetchpatch {
url = "https://github.com/ldoolitt/vhd2vl/commit/ce9b8343ffd004dfe8779a309f4b5a594dbec45e.patch";
sha256 = "1qaqhm2mk66spb2dir9n91b385rarglc067js1g6pcg8mg5v3hhf";
})
# fix build with verilog 11.0
./test.patch
];
nativeBuildInputs = [
@ -37,6 +32,13 @@ stdenv.mkDerivation rec {
verilog
];
# the "translate" target both (a) builds the software and (b) runs
# the tests (without validating the results)
buildTargets = [ "translate" ];
# the "diff" target examines the test results
checkTarget = "diff";
installPhase = ''
runHook preInstall
install -D -m755 src/vhd2vl $out/bin/vdh2vl

@ -0,0 +1,35 @@
--- a/translated_examples/fifo.v 1970-01-01 00:00:01.000000000 +0000
+++ a/temp/verilog/fifo.v 2022-05-11 03:44:43.173604945 +0000
@@ -107,7 +107,7 @@
//--- Read address counter --------------
//---------------------------------------
assign add_RD_CE = (iempty == 1'b1) ? 1'b0 : (RD == 1'b0) ? 1'b0 : 1'b1;
- assign n_add_RD = (add_RD) + 4'h1;
+ assign n_add_RD = add_RD + 4'h1;
always @(posedge clk_RD, posedge rst) begin
if((rst == 1'b1)) begin
add_RD <= {5{1'b0}};
diff -u '--exclude=Makefile' '--exclude-from=examples/exclude' translated_examples/test.v temp/verilog/test.v
--- a/translated_examples/test.v 1970-01-01 00:00:01.000000000 +0000
+++ a/temp/verilog/test.v 2022-05-11 03:44:43.189604945 +0000
@@ -125,7 +125,7 @@
endcase
end
- assign code1[1:0] = a[6:5] ^ ({a[4],b[6]});
+ assign code1[1:0] = a[6:5] ^ {a[4],b[6]};
// Asynch process
always @(we, addr, config1, bip) begin
if(we == 1'b1) begin
diff -u '--exclude=Makefile' '--exclude-from=examples/exclude' translated_examples/withselect.v temp/verilog/withselect.v
--- a/translated_examples/withselect.v 1970-01-01 00:00:01.000000000 +0000
+++ a/temp/verilog/withselect.v 2022-05-11 03:44:43.193604945 +0000
@@ -33,7 +33,7 @@
endcase
end
- assign code1[1:0] = a[6:5] ^ ({a[4],b[6]});
+ assign code1[1:0] = a[6:5] ^ {a[4],b[6]};
assign foo = {(((1 + 1))-((0))+1){1'b0}};
assign egg = {78{1'b0}};
assign baz = {(((bus_width * 4))-((bus_width * 3 - 1))+1){1'b1}};
Loading…
Cancel
Save