From 9524f0028b5ab5d4b2f6e73191b0a6ae1bce2c71 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Thu, 3 Oct 2019 20:38:38 -0400 Subject: [PATCH] support identifier delay values --- src/Language/SystemVerilog/Parser/Parse.y | 3 ++- test/basic/union.sv | 28 ++++++++++++----------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/Language/SystemVerilog/Parser/Parse.y b/src/Language/SystemVerilog/Parser/Parse.y index 191d8fc..2739265 100644 --- a/src/Language/SystemVerilog/Parser/Parse.y +++ b/src/Language/SystemVerilog/Parser/Parse.y @@ -1017,9 +1017,10 @@ Sense :: { Sense } DelayValue :: { Expr } : Number { Number $1 } + | Identifier { Ident $1 } + | Identifier "::" Identifier { PSIdent $1 $3 } -- TODO: Support these other DelayValues? -- | real_number --- | ps_identifier -- | time_literal -- | 1step diff --git a/test/basic/union.sv b/test/basic/union.sv index 0ba4339..d5af45d 100644 --- a/test/basic/union.sv +++ b/test/basic/union.sv @@ -32,29 +32,31 @@ module wrap; C c; D d; + localparam delay = 10; + initial begin $monitor($time, " %b %b", a.x, a.y); - a.x = 5'b01101; #10; - a.y = 5'b11101; #10; + a.x = 5'b01101; #delay; + a.y = 5'b11101; #delay; $monitor($time, " %b %b", b.x, b.y); - b.x = 5'b01101; #10; - b.y = 5'b11101; #10; + b.x = 5'b01101; #delay; + b.y = 5'b11101; #delay; $monitor($time, " %b %b", c.x, c.y); - c.x = 5'b01101; #10; - c.y = 5'b11101; #10; + c.x = 5'b01101; #delay; + c.y = 5'b11101; #delay; $monitor($time, " %b %b {%b %b} %b {%b %b}", d.x, d.y, d.y.a, d.y.b, d.z, d.z.a, d.z.b); - d.x = 5'b01101; #10; - d.y = '{ a: 3'b110, b: 2'b01 }; #10; - d.z = '{ b: 3'b110, a: 2'b01 }; #10; - d.y.a = 3'b010; #10; - d.y.b = 2'b10; #10; - d.z.a = 2'b11; #10; - d.z.b = 3'b101; #10; + d.x = 5'b01101; #delay; + d.y = '{ a: 3'b110, b: 2'b01 }; #delay; + d.z = '{ b: 3'b110, a: 2'b01 }; #delay; + d.y.a = 3'b010; #delay; + d.y.b = 2'b10; #delay; + d.z.a = 2'b11; #delay; + d.z.b = 3'b101; #delay; end