Skip to content

Allowing parameters for PSL sequences & properties #245

@tmeissner

Description

@tmeissner

At the moment, you can define sequences & properties to use them with assert & cover statements. But it is not possible to define them with parameters as defined in PSL 1.x. For example, assume, we have following architecture:

library ieee;
  use ieee.std_logic_1164.all;

entity test is
end entity test;


architecture sim of test is

  signal a : std_logic;
  signal clk : std_logic := '0';

begin

  clk <= not(clk) after 5 ns;

  process is
  begin
    a <= '0';
    wait until rising_edge(clk);
    a <= '1';
    wait until rising_edge(clk);
    a <= '0';
    wait;
  end process;


-- psl default clock is rising_edge(clk);
-- psl sequence TEST_s is {a; not(a); a};
-- psl TEST_c : cover TEST_s report "TEST_c hit";  

-- psl sequence TEST0_s (boolean y) is {y; not(y); y};
-- psl TEST0_c : cover TEST0_s (a) report "TEST_c hit";


end architecture sim;

Then TEST_C analyses fine, but TEST0_s & TEST0_c gives me following error:

$ ghdl -a --std=08 -fpsl test.vhd 
test.vhd:32:48: PSL declaration "y" not allowed in an expression
test.vhd:32:44: no function declarations for operator "not"
ghdl: compilation error

I using the current HEAD of ghdl. Support of sequences & properties with parameters would be very helpful to write more reusable PSL code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementFeature: PSLRequested feature addition related to the Property Specification Language (PSL).

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions