What do the (site, here, up) arguments mean when creating rocket-chip configurations?









up vote
1
down vote

favorite












When creating a new "Config" we define a function that takes three "View"s (site, here, up) as arguments. What is the meaning of these three Views?










share|improve this question

























    up vote
    1
    down vote

    favorite












    When creating a new "Config" we define a function that takes three "View"s (site, here, up) as arguments. What is the meaning of these three Views?










    share|improve this question























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      When creating a new "Config" we define a function that takes three "View"s (site, here, up) as arguments. What is the meaning of these three Views?










      share|improve this question













      When creating a new "Config" we define a function that takes three "View"s (site, here, up) as arguments. What is the meaning of these three Views?







      chisel rocket-chip






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 10 at 20:06









      Ben Reynwar

      921817




      921817






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          2
          down vote



          accepted










          As purely a historical reference, take a look at the Chisel2 Advanced Parameterization Manual (with the huge caveat to not take this too literally as it's old). However, I believe that the motivation and discussion of site, here, and up still holds in sections 2.6, 2.7, 2.8, and 3.6.



          Roughly, site, here, and up help with handling and resolving dependencies on other parameters.



          site allows you to disambiguate different parameters that may have the same name, e.g., Width, based on a defined location. here allows parameters to query other parameters defined in the same group. up allows you to access a parent configuration's parameter object with the intended purpose being if you want to copy it while modifying parameters.






          share|improve this answer




















          • That document is exactly what I was looking for. Thanks!
            – Ben Reynwar
            Nov 10 at 22:12

















          up vote
          0
          down vote













          class Blah extends Config ((site, here, up)) ..


          is the parameter tuple, which allows partial function application. This allows partial configuration of the Rocket core and setting default parameters, preserving elasticity and type correctness.



          You may check its implementation here






          share|improve this answer




















          • I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
            – Ben Reynwar
            Nov 10 at 20:51










          • Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
            – Tampler
            Nov 10 at 20:58










          • I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
            – Ben Reynwar
            Nov 10 at 21:05










          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',
          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/3.0/"u003ecc by-sa 3.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%2f53242960%2fwhat-do-the-site-here-up-arguments-mean-when-creating-rocket-chip-configurat%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          2
          down vote



          accepted










          As purely a historical reference, take a look at the Chisel2 Advanced Parameterization Manual (with the huge caveat to not take this too literally as it's old). However, I believe that the motivation and discussion of site, here, and up still holds in sections 2.6, 2.7, 2.8, and 3.6.



          Roughly, site, here, and up help with handling and resolving dependencies on other parameters.



          site allows you to disambiguate different parameters that may have the same name, e.g., Width, based on a defined location. here allows parameters to query other parameters defined in the same group. up allows you to access a parent configuration's parameter object with the intended purpose being if you want to copy it while modifying parameters.






          share|improve this answer




















          • That document is exactly what I was looking for. Thanks!
            – Ben Reynwar
            Nov 10 at 22:12














          up vote
          2
          down vote



          accepted










          As purely a historical reference, take a look at the Chisel2 Advanced Parameterization Manual (with the huge caveat to not take this too literally as it's old). However, I believe that the motivation and discussion of site, here, and up still holds in sections 2.6, 2.7, 2.8, and 3.6.



          Roughly, site, here, and up help with handling and resolving dependencies on other parameters.



          site allows you to disambiguate different parameters that may have the same name, e.g., Width, based on a defined location. here allows parameters to query other parameters defined in the same group. up allows you to access a parent configuration's parameter object with the intended purpose being if you want to copy it while modifying parameters.






          share|improve this answer




















          • That document is exactly what I was looking for. Thanks!
            – Ben Reynwar
            Nov 10 at 22:12












          up vote
          2
          down vote



          accepted







          up vote
          2
          down vote



          accepted






          As purely a historical reference, take a look at the Chisel2 Advanced Parameterization Manual (with the huge caveat to not take this too literally as it's old). However, I believe that the motivation and discussion of site, here, and up still holds in sections 2.6, 2.7, 2.8, and 3.6.



          Roughly, site, here, and up help with handling and resolving dependencies on other parameters.



          site allows you to disambiguate different parameters that may have the same name, e.g., Width, based on a defined location. here allows parameters to query other parameters defined in the same group. up allows you to access a parent configuration's parameter object with the intended purpose being if you want to copy it while modifying parameters.






          share|improve this answer












          As purely a historical reference, take a look at the Chisel2 Advanced Parameterization Manual (with the huge caveat to not take this too literally as it's old). However, I believe that the motivation and discussion of site, here, and up still holds in sections 2.6, 2.7, 2.8, and 3.6.



          Roughly, site, here, and up help with handling and resolving dependencies on other parameters.



          site allows you to disambiguate different parameters that may have the same name, e.g., Width, based on a defined location. here allows parameters to query other parameters defined in the same group. up allows you to access a parent configuration's parameter object with the intended purpose being if you want to copy it while modifying parameters.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 21:43









          seldridge

          62549




          62549











          • That document is exactly what I was looking for. Thanks!
            – Ben Reynwar
            Nov 10 at 22:12
















          • That document is exactly what I was looking for. Thanks!
            – Ben Reynwar
            Nov 10 at 22:12















          That document is exactly what I was looking for. Thanks!
          – Ben Reynwar
          Nov 10 at 22:12




          That document is exactly what I was looking for. Thanks!
          – Ben Reynwar
          Nov 10 at 22:12












          up vote
          0
          down vote













          class Blah extends Config ((site, here, up)) ..


          is the parameter tuple, which allows partial function application. This allows partial configuration of the Rocket core and setting default parameters, preserving elasticity and type correctness.



          You may check its implementation here






          share|improve this answer




















          • I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
            – Ben Reynwar
            Nov 10 at 20:51










          • Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
            – Tampler
            Nov 10 at 20:58










          • I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
            – Ben Reynwar
            Nov 10 at 21:05














          up vote
          0
          down vote













          class Blah extends Config ((site, here, up)) ..


          is the parameter tuple, which allows partial function application. This allows partial configuration of the Rocket core and setting default parameters, preserving elasticity and type correctness.



          You may check its implementation here






          share|improve this answer




















          • I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
            – Ben Reynwar
            Nov 10 at 20:51










          • Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
            – Tampler
            Nov 10 at 20:58










          • I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
            – Ben Reynwar
            Nov 10 at 21:05












          up vote
          0
          down vote










          up vote
          0
          down vote









          class Blah extends Config ((site, here, up)) ..


          is the parameter tuple, which allows partial function application. This allows partial configuration of the Rocket core and setting default parameters, preserving elasticity and type correctness.



          You may check its implementation here






          share|improve this answer












          class Blah extends Config ((site, here, up)) ..


          is the parameter tuple, which allows partial function application. This allows partial configuration of the Rocket core and setting default parameters, preserving elasticity and type correctness.



          You may check its implementation here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 20:26









          Tampler

          1138




          1138











          • I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
            – Ben Reynwar
            Nov 10 at 20:51










          • Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
            – Tampler
            Nov 10 at 20:58










          • I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
            – Ben Reynwar
            Nov 10 at 21:05
















          • I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
            – Ben Reynwar
            Nov 10 at 20:51










          • Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
            – Tampler
            Nov 10 at 20:58










          • I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
            – Ben Reynwar
            Nov 10 at 21:05















          I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
          – Ben Reynwar
          Nov 10 at 20:51




          I've looked through the implementation. I don't understand why three views are used rather than a single view. In the rocket-chip repository I can see lots of examples where "site" is getting used, a couple of examples where "up" is getting used and no examples of where "here" is getting used. Presumably there's a reason that three parameter sets are being used, rather than just one.
          – Ben Reynwar
          Nov 10 at 20:51












          Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
          – Tampler
          Nov 10 at 20:58




          Perhaps, that's a design artifact from an early life of Rocket. It's being under active development for about 5 years, so you may open a Pull Request and improve/refactor this, if you feel it is an important feature
          – Tampler
          Nov 10 at 20:58












          I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
          – Ben Reynwar
          Nov 10 at 21:05




          I'm just trying to understand the purpose. I thought maybe they related to global versus local module level parameters or something like that.
          – Ben Reynwar
          Nov 10 at 21:05

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242960%2fwhat-do-the-site-here-up-arguments-mean-when-creating-rocket-chip-configurat%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







          這個網誌中的熱門文章

          Barbados

          How to read a connectionString WITH PROVIDER in .NET Core?

          Node.js Script on GitHub Pages or Amazon S3