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

Question: Scope for AUTO_LISP? #939

Closed
veripoolbot opened this issue Jul 10, 2015 · 12 comments
Closed

Question: Scope for AUTO_LISP? #939

veripoolbot opened this issue Jul 10, 2015 · 12 comments
Labels

Comments

@veripoolbot
Copy link
Collaborator

@veripoolbot veripoolbot commented Jul 10, 2015


Author Name: Shareef Jalloq
Original Redmine Message: 1635 from https://www.veripool.org


Hi there,

I'm trying to use verilog-auto-output-ignore-regexp inside an AUTO_LISP but am running into the issue that this seems to apply the ignore to all modules that have the same signal name. Is this behaviour intended? I thought it should only apply to module within which it is used?

In my case I have an output from a child module that I don't want exported from a parent module (it's currently unused and tied off to an unused_ok). What I'm seeing is that once I run AUTO's in the parent, if I subsequently run AUTO's in the child module, the output is also removed from the child module.

Thanks.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-07-10T12:41:19Z


I suspect this is because you're using "setq" on a variable that isn't "buffer-local" which is a general emacs concept. Instead of setting it in AUTO_LISP put it in the Local Variables section at the bottom of your file and it should work.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Shareef Jalloq
Original Date: 2015-07-10T12:46:58Z


Thanks but I tried the other example in the FAQ pages and it had the same behaviour.

/*
    Local Variables:
    eval:(setq verilog-auto-output-ignore-regexp (concat
    "^\\(" 
    "signal1_.*" 
    "\\|signal2_.*" 
    "\\)$" 
    )))
    End:
*/

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-07-10T12:58:15Z


Like this, I'll fix the FAQ:

Local Variables:
verilog-auto-output-ignore-regexp: "^\\(signal1_.*\\|signal2_.*\\)$" 
End:

Or this

Local Variables:
verilog-auto-output-ignore-regexp: ""
eval:(setq verilog-auto-output-ignore-regexp (concat
"^\\(" 
"signal1_.*" 
"\\|signal2_.*" 
"\\)$" 
)))
End:
@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Shareef Jalloq
Original Date: 2015-07-10T13:11:31Z


OK, thanks, that seems to work but...

on the signals I tried it with, once I've removed the auto-output-ignore, it seems to be sticky. Even removing the internal auto-wires and re-running autos doesn't result in the outputs being reinstated. I actually had to quit xemacs before it would re-parse correctly.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-07-10T13:15:38Z


That's right because the problem was it was incorrectly set globally.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Shareef Jalloq
Original Date: 2015-07-10T13:47:10Z


Sorry, I'm getting confused. Perhaps we're talking at cross purposes.

I've tried your updated code,

Local Variables:
verilog-auto-output-ignore-regexp: "^\\(signal1_.*\\|signal2_.*\\)$" 
End:

and it works nicely. But if I remove the verilog-auto-output-ignore-regexp, for example imagine I've now implemented the functionality external to this module and would like to export this signal as an output, the output ports don't get updated. As a counter example, I don't have to quit and reload xemacs for a change to an AUTO_TEMPLATE to take effect, I just re-run AUTO's and the change is reflected. This variable seems to be sticky until a quit and reload of xemacs.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 10, 2015


Original Redmine Comment
Author Name: Shareef Jalloq
Original Date: 2015-07-10T14:04:43Z


Here's a noddy example to highlight what behaviour I would have expected.

Thanks.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 12, 2015


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-07-12T23:56:00Z


A local variable sticks until the buffer is deleted, just delete the buffer then reload the file. Sorry, but that's how Emacs works, verilog-mode can't change it. (AUTO_TEMPLATE is done by verilog-mode itself so it does it nicer.)

Alternatively set it empty.

Local Variables:
verilog-auto-output-ignore-regexp: nil
End:

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 12, 2015


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-07-12T23:58:22Z


This may be better as avoids a warning in newer Emacs:

Local Variables:
verilog-auto-output-ignore-regexp: ""
End:

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Jul 13, 2015


Original Redmine Comment
Author Name: Shareef Jalloq
Original Date: 2015-07-13T07:23:01Z


OK, thanks a lot. I understand the issue now. Cheers.

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Oct 24, 2018


Original Redmine Comment
Author Name: Yonatan Shoshan
Original Date: 2018-10-24T12:20:07Z


Hi Wilson, I wanted to know if there was a way to define more than one regexp for the output-ignore-regexp variable.
For example:

// Local Variables:
// verilog-auto-output-ignore-regexp:"clust._core._cevax_debug_mode" "boot_latch_spare"
// End:


Thanks!

@veripoolbot

This comment has been minimized.

Copy link
Collaborator Author

@veripoolbot veripoolbot commented Oct 24, 2018


Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2018-10-24T14:47:22Z


Make a regular expression which ORs the two subexpressions. "\(clust._core._cevax_debug_mode\|boot_latch_spare\)"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant
You can’t perform that action at this time.