How to keep all variable name In chisel when generate Verilog codewrap Verilog code in chiselShould Chisel generate verilog testbench logic?Cannot use Bool in class parametrization to reverse reset polarityChisel: Verilog generated code for Sint and UIntChisel3 disable GEN wiresChisel code translating into Verilog/C++Chisel Output with SystemVerilog Interfaces/StructsHow to decipher comments in generated Verilog from chisel?How to generate Verilog code with parametized modules in Chisel?Compiling Modules Separately and Linking
Do the villains know Batman has no superpowers?
A most delayed departure
Worms crawling under skin
How much Damage can be done with "just" heating matter?
What do you do if you have developments on your paper during the long peer review process?
How do I deal with too many NPCs in my campaign?
What is this utensil for?
Guitar tuning (EADGBE), "perfect" fourths?
To what extent is it worthwhile to report check fraud / refund scams?
How to make interviewee comfortable interviewing in lounge chairs
Did Apollo carry and use WD40?
Is there any reason nowadays to use a neon indicator lamp instead of an LED?
Do things made of adamantine rust?
Hiking with a mule or two?
What was the deeper meaning of Hermione wanting the cloak?
Canonical ordering of days of week
An Algorithm Which Schedules Your Life
What is the need of methods like GET and POST in the HTTP protocol?
How to conditionally load a package only if shell-escape (write18) is passed
How to manage expenditure when billing cycles and paycheck cycles are not aligned?
Why is the missed-approach course for the "RNAV (GNSS) - A" approach to runway 28 at ENSB shaped all funny?
Would Taiwan and China's dispute be solved if Taiwan gave up being the Republic of China?
What are these pixel-level discolored specks? How can I fix it?
Where does an unaligned creature's soul go after death?
How to keep all variable name In chisel when generate Verilog code
wrap Verilog code in chiselShould Chisel generate verilog testbench logic?Cannot use Bool in class parametrization to reverse reset polarityChisel: Verilog generated code for Sint and UIntChisel3 disable GEN wiresChisel code translating into Verilog/C++Chisel Output with SystemVerilog Interfaces/StructsHow to decipher comments in generated Verilog from chisel?How to generate Verilog code with parametized modules in Chisel?Compiling Modules Separately and Linking
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
The Register name in chisel can be definitly found in verilog ,.
but Wire name sometimes ellipsis in verilog code.
for example , I cant find sjwr ,sjwaddr
name in verilog .
val sjwr = Wire(Bool())
val sjwaddr = Wire(UInt(jcnt.getWidth.W))
sjwr := jcnt_rdy
sjwaddr := jcnt
when (sjwr) sjBuf(sjwaddr) := sjxv
How can i keep all variable name in chisel when we generate verilog code .
it's important for wave debug.
chisel
add a comment
|
The Register name in chisel can be definitly found in verilog ,.
but Wire name sometimes ellipsis in verilog code.
for example , I cant find sjwr ,sjwaddr
name in verilog .
val sjwr = Wire(Bool())
val sjwaddr = Wire(UInt(jcnt.getWidth.W))
sjwr := jcnt_rdy
sjwaddr := jcnt
when (sjwr) sjBuf(sjwaddr) := sjxv
How can i keep all variable name in chisel when we generate verilog code .
it's important for wave debug.
chisel
add a comment
|
The Register name in chisel can be definitly found in verilog ,.
but Wire name sometimes ellipsis in verilog code.
for example , I cant find sjwr ,sjwaddr
name in verilog .
val sjwr = Wire(Bool())
val sjwaddr = Wire(UInt(jcnt.getWidth.W))
sjwr := jcnt_rdy
sjwaddr := jcnt
when (sjwr) sjBuf(sjwaddr) := sjxv
How can i keep all variable name in chisel when we generate verilog code .
it's important for wave debug.
chisel
The Register name in chisel can be definitly found in verilog ,.
but Wire name sometimes ellipsis in verilog code.
for example , I cant find sjwr ,sjwaddr
name in verilog .
val sjwr = Wire(Bool())
val sjwaddr = Wire(UInt(jcnt.getWidth.W))
sjwr := jcnt_rdy
sjwaddr := jcnt
when (sjwr) sjBuf(sjwaddr) := sjxv
How can i keep all variable name in chisel when we generate verilog code .
it's important for wave debug.
chisel
chisel
asked Mar 28 at 15:34
jijingjijing
61 bronze badge
61 bronze badge
add a comment
|
add a comment
|
1 Answer
1
active
oldest
votes
Thank you for your interest in Chisel!
There are several reasons why a name may be disappearing.
Constant Propagation
For many reasons, including interoperability with existing CAD tools, performance, and Verilog debug-ability, Chisel (actually the FIRRTL compiler underneath Chisel) will propagate constants and direct wire connections. For example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = Wire(UInt(8.W))
wire := io.in
io.out := wire
In the above code, wire
will be removed because it is simply connected to io.in
, the Verilog will just show:
assign io_out = io_in;
Inability to name
Chisel Modules are implemented as Scala Classes. Due to implementation reasons, by default Chisel can only name "top-level" vals
in the body of the Module, for example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
suggestName
You can manually name any signal by calling .suggestName("name")
on it, eg.
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented.suggestName("incremented") // Now it is named!
Enter @chiselName
We can fix the above issue with an experimental feature called @chiselName
like so:
import chisel3.experimental.chiselName
@chiselName
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
@chiselName
is an annotation that can be used on any class
or object
definition and will ensure vals like incremented
can get named. @chiselName
effectively rewrites your code to put .suggestName
all over the place.
I hope this helps!
EDIT more info:
Disabling Optimizations
I don't think it's in a release yet (most recent being 3.1.7
, this will be in 3.2.0
), but we do have an option to disable all optimizations. You can change the "compiler" used from verilog
to mverilog
(for "minimum" Verilog, ie. no optimizations). This can be done with the command-line argument -X mverilog
either in Chisel or FIRRTL.
Don't Touch
You can also use chisel3.experimental.dontTouch
to mark a signal as something that shouldn't be deleted. This will prevent optimizations from removing the signal. For example:
import chisel3.experimental.dontTouch
class MyModule extends Module {
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = dontTouch(Wire(UInt(8.W)))
wire := io.in
io.out := wire
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
1
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals,dontTouch
can help with what you want.
– jkoenig
Mar 29 at 22:07
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
add a comment
|
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55401525%2fhow-to-keep-all-variable-name-in-chisel-when-generate-verilog-code%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thank you for your interest in Chisel!
There are several reasons why a name may be disappearing.
Constant Propagation
For many reasons, including interoperability with existing CAD tools, performance, and Verilog debug-ability, Chisel (actually the FIRRTL compiler underneath Chisel) will propagate constants and direct wire connections. For example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = Wire(UInt(8.W))
wire := io.in
io.out := wire
In the above code, wire
will be removed because it is simply connected to io.in
, the Verilog will just show:
assign io_out = io_in;
Inability to name
Chisel Modules are implemented as Scala Classes. Due to implementation reasons, by default Chisel can only name "top-level" vals
in the body of the Module, for example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
suggestName
You can manually name any signal by calling .suggestName("name")
on it, eg.
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented.suggestName("incremented") // Now it is named!
Enter @chiselName
We can fix the above issue with an experimental feature called @chiselName
like so:
import chisel3.experimental.chiselName
@chiselName
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
@chiselName
is an annotation that can be used on any class
or object
definition and will ensure vals like incremented
can get named. @chiselName
effectively rewrites your code to put .suggestName
all over the place.
I hope this helps!
EDIT more info:
Disabling Optimizations
I don't think it's in a release yet (most recent being 3.1.7
, this will be in 3.2.0
), but we do have an option to disable all optimizations. You can change the "compiler" used from verilog
to mverilog
(for "minimum" Verilog, ie. no optimizations). This can be done with the command-line argument -X mverilog
either in Chisel or FIRRTL.
Don't Touch
You can also use chisel3.experimental.dontTouch
to mark a signal as something that shouldn't be deleted. This will prevent optimizations from removing the signal. For example:
import chisel3.experimental.dontTouch
class MyModule extends Module {
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = dontTouch(Wire(UInt(8.W)))
wire := io.in
io.out := wire
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
1
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals,dontTouch
can help with what you want.
– jkoenig
Mar 29 at 22:07
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
add a comment
|
Thank you for your interest in Chisel!
There are several reasons why a name may be disappearing.
Constant Propagation
For many reasons, including interoperability with existing CAD tools, performance, and Verilog debug-ability, Chisel (actually the FIRRTL compiler underneath Chisel) will propagate constants and direct wire connections. For example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = Wire(UInt(8.W))
wire := io.in
io.out := wire
In the above code, wire
will be removed because it is simply connected to io.in
, the Verilog will just show:
assign io_out = io_in;
Inability to name
Chisel Modules are implemented as Scala Classes. Due to implementation reasons, by default Chisel can only name "top-level" vals
in the body of the Module, for example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
suggestName
You can manually name any signal by calling .suggestName("name")
on it, eg.
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented.suggestName("incremented") // Now it is named!
Enter @chiselName
We can fix the above issue with an experimental feature called @chiselName
like so:
import chisel3.experimental.chiselName
@chiselName
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
@chiselName
is an annotation that can be used on any class
or object
definition and will ensure vals like incremented
can get named. @chiselName
effectively rewrites your code to put .suggestName
all over the place.
I hope this helps!
EDIT more info:
Disabling Optimizations
I don't think it's in a release yet (most recent being 3.1.7
, this will be in 3.2.0
), but we do have an option to disable all optimizations. You can change the "compiler" used from verilog
to mverilog
(for "minimum" Verilog, ie. no optimizations). This can be done with the command-line argument -X mverilog
either in Chisel or FIRRTL.
Don't Touch
You can also use chisel3.experimental.dontTouch
to mark a signal as something that shouldn't be deleted. This will prevent optimizations from removing the signal. For example:
import chisel3.experimental.dontTouch
class MyModule extends Module {
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = dontTouch(Wire(UInt(8.W)))
wire := io.in
io.out := wire
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
1
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals,dontTouch
can help with what you want.
– jkoenig
Mar 29 at 22:07
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
add a comment
|
Thank you for your interest in Chisel!
There are several reasons why a name may be disappearing.
Constant Propagation
For many reasons, including interoperability with existing CAD tools, performance, and Verilog debug-ability, Chisel (actually the FIRRTL compiler underneath Chisel) will propagate constants and direct wire connections. For example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = Wire(UInt(8.W))
wire := io.in
io.out := wire
In the above code, wire
will be removed because it is simply connected to io.in
, the Verilog will just show:
assign io_out = io_in;
Inability to name
Chisel Modules are implemented as Scala Classes. Due to implementation reasons, by default Chisel can only name "top-level" vals
in the body of the Module, for example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
suggestName
You can manually name any signal by calling .suggestName("name")
on it, eg.
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented.suggestName("incremented") // Now it is named!
Enter @chiselName
We can fix the above issue with an experimental feature called @chiselName
like so:
import chisel3.experimental.chiselName
@chiselName
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
@chiselName
is an annotation that can be used on any class
or object
definition and will ensure vals like incremented
can get named. @chiselName
effectively rewrites your code to put .suggestName
all over the place.
I hope this helps!
EDIT more info:
Disabling Optimizations
I don't think it's in a release yet (most recent being 3.1.7
, this will be in 3.2.0
), but we do have an option to disable all optimizations. You can change the "compiler" used from verilog
to mverilog
(for "minimum" Verilog, ie. no optimizations). This can be done with the command-line argument -X mverilog
either in Chisel or FIRRTL.
Don't Touch
You can also use chisel3.experimental.dontTouch
to mark a signal as something that shouldn't be deleted. This will prevent optimizations from removing the signal. For example:
import chisel3.experimental.dontTouch
class MyModule extends Module {
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = dontTouch(Wire(UInt(8.W)))
wire := io.in
io.out := wire
Thank you for your interest in Chisel!
There are several reasons why a name may be disappearing.
Constant Propagation
For many reasons, including interoperability with existing CAD tools, performance, and Verilog debug-ability, Chisel (actually the FIRRTL compiler underneath Chisel) will propagate constants and direct wire connections. For example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = Wire(UInt(8.W))
wire := io.in
io.out := wire
In the above code, wire
will be removed because it is simply connected to io.in
, the Verilog will just show:
assign io_out = io_in;
Inability to name
Chisel Modules are implemented as Scala Classes. Due to implementation reasons, by default Chisel can only name "top-level" vals
in the body of the Module, for example:
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
suggestName
You can manually name any signal by calling .suggestName("name")
on it, eg.
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented.suggestName("incremented") // Now it is named!
Enter @chiselName
We can fix the above issue with an experimental feature called @chiselName
like so:
import chisel3.experimental.chiselName
@chiselName
class MyModule extends Module
val io = IO(new Bundle
val in = Input(UInt(8.W))
val in2 = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val sum = io.in + io.in2 // this is a top-level val, will be named
// A method, we can call to help generate code:
def inc(x: UInt): UInt =
val incremented = x + 1.U // We cannot name this, it's inside a method
incremented
io.out := inc(sum)
@chiselName
is an annotation that can be used on any class
or object
definition and will ensure vals like incremented
can get named. @chiselName
effectively rewrites your code to put .suggestName
all over the place.
I hope this helps!
EDIT more info:
Disabling Optimizations
I don't think it's in a release yet (most recent being 3.1.7
, this will be in 3.2.0
), but we do have an option to disable all optimizations. You can change the "compiler" used from verilog
to mverilog
(for "minimum" Verilog, ie. no optimizations). This can be done with the command-line argument -X mverilog
either in Chisel or FIRRTL.
Don't Touch
You can also use chisel3.experimental.dontTouch
to mark a signal as something that shouldn't be deleted. This will prevent optimizations from removing the signal. For example:
import chisel3.experimental.dontTouch
class MyModule extends Module {
val io = IO(new Bundle
val in = Input(UInt(8.W))
val out = Output(UInt(8.W))
)
val wire = dontTouch(Wire(UInt(8.W)))
wire := io.in
io.out := wire
edited Mar 29 at 22:05
answered Mar 28 at 17:00
jkoenigjkoenig
2,97110 silver badges18 bronze badges
2,97110 silver badges18 bronze badges
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
1
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals,dontTouch
can help with what you want.
– jkoenig
Mar 29 at 22:07
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
add a comment
|
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
1
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals,dontTouch
can help with what you want.
– jkoenig
Mar 29 at 22:07
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
Thank you very much for your detailed answers。the method of suggestName and chiselName are very useful. My problems is more about that the name removed in direct wire connections. I know keep Intermediate wire is no practical meaning, but it's useful when wave debug , sometimes i named it just want clear or easy to found it in wave. Does it have some option to close propergate when generate verilog code . After debugging and stabilization, then open propagate option to get the final verilog code (Formal equivalence).
– jijing
Mar 29 at 7:15
1
1
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for
3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals, dontTouch
can help with what you want.– jkoenig
Mar 29 at 22:07
I've edited my response to talk about how to disable optimizations (not in the current release, you can wait for
3.2
which should be out in a couple of weeks or build Chisel manually from master and use that). I should caution that running formal equivalence tools tend to struggle comparing large designs with and without optimizations, but you can try it. For specific signals, dontTouch
can help with what you want.– jkoenig
Mar 29 at 22:07
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
That's great! absolutely what I want, thank you
– jijing
Apr 1 at 6:33
add a comment
|
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55401525%2fhow-to-keep-all-variable-name-in-chisel-when-generate-verilog-code%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown