Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prefix/suffix exceptions not exempted from case checking in instantiation_008 #1177

Closed
maltaisn opened this issue Jun 13, 2024 · 6 comments · Fixed by #1181
Closed

Prefix/suffix exceptions not exempted from case checking in instantiation_008 #1177

maltaisn opened this issue Jun 13, 2024 · 6 comments · Fixed by #1181
Assignees
Labels

Comments

@maltaisn
Copy link

Similar to #644, an error is issued when prefix/suffix exceptions don't match configured case for instantiation_008, and maybe other rules which I haven't tested.

Example configuration:

rule:
  group:
    case:
      severity: Warning
  instantiation_008:
    case: lower
    prefix_exceptions:
      - "P_"
    suffix_exceptions:
      - "_S"

With file:

library ieee;
  use ieee.std_logic_1164.all;

entity test is
  port (
    a : in    std_logic;
    b : in    std_logic
  );
end entity test;

architecture behavioral of test is

  component comp is
    port (
      a : in    std_logic;
      b : in    std_logic
    );
  end component;

begin

  P_comp : component comp
    port map (
      a => a,
      b => b
    );

  comp_S : component comp
    port map (
      a => a,
      b => b
    );

end architecture behavioral;

Gives output:

Phase 7 of 7... Reporting
Total Rules Checked: 738
Total Violations:    2
  Error   :     0
  Warning :     2
----------------------------+------------+------------+--------------------------------------
  Rule                      |  severity  |  line(s)   | Solution
----------------------------+------------+------------+--------------------------------------
  instantiation_008         | Warning    |         22 | Change "P_comp" to "p_comp"
  instantiation_008         | Warning    |         28 | Change "comp_S" to "comp_s"
----------------------------+------------+------------+--------------------------------------

The exceptions should be completely exempt from case checking. I'm using v3.24.0.

@maltaisn maltaisn added the bug label Jun 13, 2024
@jeremiah-c-leary
Copy link
Owner

Evening @maltaisn ,

The prefix and suffix exceptions are applied at the same time. So the configuration you have would be checking the following:

  P_comp_S : component comp
    port map (
      a => a,
      b => b
    );

Since your first instantiation is missing the suffix _S it is considered a violation.
The second instance is missing the prefix _P so it is also considered a violation.

I scanned the documentation and there is nothing that covers using both prefix and suffix exceptions at the same time.

The question is, how would you like to proceed?

--Jeremy

@maltaisn
Copy link
Author

I would have expected the check to succeed if either a prefix is present, a suffix, or one of both.

@Benito-E
Copy link

@maltaisn This is a comment from an outside of what you're working on, but I believe it wouldn't be impossible to create a rule that enforces one of both. There are two base rules (rules that are the foundation for many of the full set of VSG's built in rules) that manage prefix and suffix rules: vsg.rules.token_prefix.py and vsg.rules.token_suffix.py. While the standard way to create a rule usually involves extending your rule off of one of these base rules, in order to capture the functionality of both of these rules, you could create a unique rule that instantiates both these rules as objects, runs their analysis manually, and adds violations based on the violations present within those objects.

--Benito

@jeremiah-c-leary
Copy link
Owner

Evening @maltaisn and @Benito-E ,

I reviewed the implementation and I believe the best course of action would be to update the prefix/suffix base rule to check for all permutations of prefix and suffix exceptions if both are defined. I should have considered those permutations when I first added the exceptions.

I have pushed an update for this to issue-1177 branch. When you get a chance could you check it out on your end and let me know if it is working for you?

Thanks,

--Jeremy

@maltaisn
Copy link
Author

It works for me, thanks!

@jeremiah-c-leary
Copy link
Owner

Awesome I will merge this to master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
3 participants