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;








1















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.










share|improve this question






























    1















    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.










    share|improve this question


























      1












      1








      1








      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.










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 28 at 15:34









      jijingjijing

      61 bronze badge




      61 bronze badge

























          1 Answer
          1






          active

          oldest

          votes


















          4
















          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





          share|improve this answer



























          • 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 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













          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
          );



          );














          draft saved

          draft discarded
















          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









          4
















          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





          share|improve this answer



























          • 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 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















          4
















          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





          share|improve this answer



























          • 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 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













          4














          4










          4









          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





          share|improve this answer















          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






          share|improve this answer














          share|improve this answer



          share|improve this answer








          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 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

















          • 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 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
















          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




















          draft saved

          draft discarded















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript