RE: [sv-bc] configurations and parameters

From: Bresticker, Shalom <shalom.bresticker_at_.....>
Date: Sun Aug 12 2007 - 02:48:28 PDT
In contrast to Tom and Gord, I do think that configurations should be
stronger than parameter assignments and overrides within the code
itself. I think of configs as like command-line switches, which have
that characteristic. The purpose is to be able to change the
configuration without having to touch the code itself. 

Shalom


> -----Original Message-----
> From: owner-sv-bc@server.eda.org 
> [mailto:owner-sv-bc@server.eda.org] On Behalf Of Alsop, Thomas R
> Sent: Saturday, August 11, 2007 1:00 AM
> To: Gordon Vreugdenhil; Mark Hartoog
> Cc: mills@lcdm-eng.com; sv-bc@server.eda.org
> Subject: RE: [sv-bc] configurations and parameters
> 
> Hi Don, I'd like some clarification on what we are proposing. 
> First, since I am new to configs, I'd like to explain my 
> understanding of what they are doing.  A config is used to 
> override the default binding of the instantiated "design 
> element" (i.e. modules, primitives, interface, etc) thereby 
> allowing a designer to place another version of the 
> underlying code in a different library and rebind to that 
> library via a config "instance" line. 
> 
> If I understand things correctly, I am not sure I see the 
> need to override parameters within a config.  If you are 
> rebinding in the first place, you most likely have a new 
> default parameter setting in the newly binded instance.  So, 
> in order to take advantage of parameters overriding the newly 
> binded instance, you would have to have many of them and need 
> to override some of the new ones.  Granted this seems like a 
> valid usage scenario but a complex one and one that I am not 
> sure would be used often. On top of that, most likely the RTL 
> for a specific instance you are already overriding the 
> parameter value with the module instantiation. By using a 
> config with parameters you are stating that not only do you 
> want to change the underlying code but you are changing the 
> input parameters to it as well.  I just can't think of cases 
> where this is needed, at least they seem very rare. Please 
> enlighten me:')
> 
> Your examples do all use literals as Gordon stated and he 
> mentioned that while simple to implement it's not practical. 
> As a methodology enforcer on our design team I can say that 
> we frown on literals in RTL code.
> Which means that we'd want to used parameter values as inputs 
> to the config parameter override. 
> 
> Finally, I would definitely agree with Gordon on parameter 
> win scenarios which goes back to my argument about whether we 
> need this feature.  In a scenario where we do need it, 
> perhaps you can give us an example of why the config should 
> win over the instantiated redefine of the parameter.
> In our RTL models the instantiated redefine seems like the 
> golden location.  Otherwise it really complicates debug and 
> readability. 
> 
> Hope this is clear, Thanks, -Tom
> 
> -----Original Message-----
> From: owner-sv-bc@server.eda.org 
> [mailto:owner-sv-bc@server.eda.org] On Behalf Of Gordon Vreugdenhil
> Sent: Friday, August 10, 2007 10:25 AM
> To: Mark Hartoog
> Cc: mills@lcdm-eng.com; sv-bc@server.eda.org
> Subject: Re: [sv-bc] configurations and parameters
> 
> 
> 
> BTW, Mark, have you thought through how "works like bind" 
> will impact the name resolution?  Since a config impacts an 
> instance in the middle of a module, I think that my view that 
> names shouldn't be imported late would make this much simpler 
> and consistent to describe.  Otherwise we'd have to have yet 
> another set of different rules for this kind of situation versus bind.
> That assumes that you don't want to *change* the meaning of a 
> name binding decision in later code due to the impact of the config.
> 
> Having the tighter more local rules makes language extensions 
> like this much more symmetric and easier to see how they 
> would just fall into place without additional special rules 
> and irregularities.
> 
> Gord.
> 
> Mark Hartoog wrote:
> > This would work for value parameters, but does not work as well for
> type
> > parameters.
> > 
> > Users will want to use user defined types for type parameters and 
> > defparams are not allowed to type parameters.
> > 
> >> -----Original Message-----
> >> From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On 
> Behalf Of 
> >> Saikat Bandyopadhyay
> >> Sent: Thursday, August 09, 2007 9:35 PM
> >> To: 'Gordon Vreugdenhil'; mills@lcdm-eng.com
> >> Cc: sv-bc@eda.org
> >> Subject: RE: [sv-bc] configurations and parameters
> >>
> >> Hi,
> >> Few issues/suggestions
> >>
> >> 1. In the example from Gord, where WIDTH is set as parameter from 
> >> configuration, scope resolving can get very complicated.
> >> I would suggest against introducing such changes in SV.
> >>    We should rather have parameter/localparam declarations inside 
> >> configurations which can be used for overriding instance 
> parameters.
> >> This will not work like binding and cannot handle Gord's case.
> >>
> >> 2. For overriding parameters inside configuration, instead of 
> >> introducing a new Syntax, with it's precedence complexity, we can 
> >> think of using defparam inside configuration.
> >>   
> >> Slightly modified version of Don's example with my suggestions:
> >> module top ();
> >>   adder a1 (...);
> >>   adder a2 (...);
> >>   adder a3 #(.size(4)) (...);
> >>   adder a4 (...);
> >>   adder a5 #(.out(16)) (...);
> >>   adder a6 #(.out(32)) (...);
> >> endmodule // top
> >>
> >> //file adder.v, default rtlLib
> >> module adder #(parameter size = 12) (...);
> >>   // rtl adder
> >>   // description
> >>   ...
> >> endmodule // adder
> >>
> >>
> >> //file adder2.v, in diffRTLLib
> >> module adder #(parameter out = 10) (...);
> >>   // different rtl adder
> >>   // description
> >>   ...
> >> endmodule // adder
> >>
> >>
> >> //file adder.vg, in gateLib
> >> module adder (...);
> >>   // gate-level adder
> >>   // description
> >>   ...
> >> endmodule // adder
> >>
> >>
> >> //This configuration is very verbose for discussion purposes.
> >> config cfgl;
> >>   design rtlLib.top;
> >>   default liblist rtlLIb;
> >>   instance top.a2 liblist gateLib;
> >>
> >>   // SUGGESTION
> >>   localparam WIDTH = 8;
> >>
> >>   //using default lib, override instantiated parameter setting 
> >> .size(4)
> >>   // SUGGESTION
> >>   defparam top.a3.size = WIDTH*2; //adder from default liblist
> >>
> >>   //different RTLLib, used parameter setting from module,
> >>   //not changed by instantiation or configuration
> >>   instance top.a4 liblist diffRTLLib; //adder from other 
> than default 
> >> liblist
> >>
> >>   //different RTLLib, parameter is changed by 
> instantiation but not 
> >> configuration
> >>   instance top.a5 liblist diffRTLLib; //adder from other 
> than default 
> >> liblist
> >>
> >>   //different rtl lib, overriding instantiated parameter 
> setting of 
> >> .out(32)
> >>   instance top.a6 liblist diffRTLLib; //adder from other 
> than default 
> >> liblist
> >>
> >>   //parameter specified separately from instance library binding.
> >>   defparam top.a6.out = 8;
> >>
> >> endconfig
> >>
> >> Thank you,
> >> Saikat
> >>
> >>
> >> -----Original Message-----
> >> From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On 
> Behalf Of 
> >> Gordon Vreugdenhil
> >> Sent: Thursday, August 09, 2007 11:33 PM
> >> To: mills@lcdm-eng.com
> >> Cc: sv-bc@eda.org
> >> Subject: Re: [sv-bc] configurations and parameters
> >>
> >> Don, your examples all use trivial overrides using literals.
> >>
> >> Would you expect something like the following to work:
> >>
> >>    module top ();
> >>      parameter WIDTH = 16;
> >>      adder a1 (...);
> >>    endmodule
> >>
> >>    config cfgl;
> >>      design rtlLib.top;
> >>      instance top.a1 #(.size(WIDTH));
> >>    endconfig
> >>
> >> It seems to me that such a use model would be required in order to 
> >> make this viable in practice.  I would expect such 
> scenarios to sort 
> >> of behave like "bind" in terms of resolution of provided actuals.
> >>
> >> Of course restricting overrides to literals is much 
> simpler but I'm 
> >> not sure that customers will be happy with that.
> >> Allowing fully general constant expression overrides might be 
> >> difficult and slow implementation, but allowing at least an 
> >> association to another named parameter should probably be 
> permitted.
> >>
> >> As a second comment, I am not sure that I would agree that a 
> >> configuration parameter value *always* wins.  In particular, as I 
> >> mentioned in the meeting, I think that config parameters should be 
> >> handled as just a replacement instantiation override.
> >> The implication of this is that a defparam into "top.a1" 
> >> would win over the configured value.
> >>
> >> Gord.
> >>
> >> Don Mills wrote:
> >>> As I discussed during the conference on Monday - I would like to 
> >>> pursue the enhancement of setting parameters via
> >> configurations.  The
> >>> discussion on Monday noted that there are a number of
> >> issues regarding
> >>> configurations that need to be addressed, with setting
> >> parameters via
> >>> configurations being just one of many.  I was tasked
> >> (volunteered) to
> >>> gather up the issue/wish list regarding configurations and
> >> then start
> >>> working through it.  Based on the verbal discussion we had on 
> >>> configurations and the need to have all items resolved by 
> Nov 1 in 
> >>> order to be part of the next 1800 spec, I see a large task
> >> at hand.  I
> >>> feel we might have to take small steps - put some of the easier 
> >>> enhancements in now and add the rest in the next rev.  Of
> >> course I am
> >>> just speculating at this point.
> >>>
> >>> My enhancement request/proposal for configurations is to add the 
> >>> ability to set/modify parameters within a configuration.  I have 
> >>> pieced together some sample code that shows how I think
> >> this could work.
> >>> // Obviously, parameters set by configurations
> >>> //   must take precedent over instantiation parameter values.
> >>> // For this example, I assume that for models from 
> different lib's,
> >>> //   the port list for each model are (must be?) identical.
> >>>
> >>> module top ();
> >>>  //See configuration below for details of these instantiations.
> >>>  adder a1 (...);
> >>>  adder a2 (...);
> >>>  adder a3 #(.size(4)) (...);
> >>>  adder a4 (...);
> >>>  adder a5 #(.out(16)) (...);
> >>>  adder a6 #(.out(32)) (...);
> >>> endmodule // top
> >>>
> >>> //file adder.v, default rtlLib
> >>> module adder #(parameter size = 12) (...);  // rtl adder  // 
> >>> description  ...
> >>> endmodule // adder
> >>>
> >>>
> >>> //file adder2.v, in diffRTLLib
> >>> module adder #(parameter out = 10) (...);  // different 
> rtl adder  
> >>> // description  ...
> >>> endmodule // adder
> >>>
> >>>
> >>> //file adder.vg, in gateLib
> >>> module adder (...);
> >>>  // gate-level adder
> >>>  // description
> >>>  ...
> >>> endmodule // adder
> >>>
> >>>
> >>> //This configuration is very verbose for discussion purposes.
> >>> config cfgl;
> >>>  design rtlLib.top;
> >>>  default liblist rtlLIb;
> >>>  instance top.a2 liblist gateLib;
> >>>
> >>>  //default default lib, override instantiated parameter
> >> setting .size(4)
> >>>  instance top.a3 #(.size(16)); //adder from default liblist
> >>>
> >>>  //different RTLLib, used parameter setting from module,  //not 
> >>> changed by instantiation or configuration  instance 
> top.a4 liblist 
> >>> diffRTLLib; //adder from other
> >> than default
> >>> liblist
> >>>
> >>>  //different RTLLib, parameter is changed by 
> instantiation but not 
> >>> configuration  instance top.a5 liblist diffRTLLib; //adder
> >> from other
> >>> than default liblist
> >>>
> >>>  //different rtl lib, overriding instantiated parameter setting of
> >> .out(32)
> >>>  instance top.a6 #(.out(8)) liblist diffRTLLib; //adder
> >> from other than
> >>> default liblist
> >>>
> >>> endconfig
> >>>
> >>>
> >>> --
> >>> ==========================================================
> >>> Don Mills
> >>> mills@lcdm-eng.com
> >>> www.lcdm-eng.com
> >>> ==========================================================
> >>>
> >>>
> >> --
> >> 
> --------------------------------------------------------------------
> >> Gordon Vreugdenhil                                503-685-0808
> >> Model Technology (Mentor Graphics)                gordonv@model.com
> >>
> >>
> >> --
> >> This message has been scanned for viruses and dangerous content by 
> >> MailScanner, and is believed to be clean.
> >>
> >>
> >>
> >>
> >>
> >>
> >> -- 
> >> This message has been scanned for viruses and
> >> dangerous content by MailScanner, and is
> >> believed to be clean.
> >>
> >>
> 
> -- 
> --------------------------------------------------------------------
> Gordon Vreugdenhil                                503-685-0808
> Model Technology (Mentor Graphics)                gordonv@model.com
> 
> 
> -- 
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
> 
> -- 
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
> 

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Sun Aug 12 02:48:59 2007

This archive was generated by hypermail 2.1.8 : Sun Aug 12 2007 - 02:49:30 PDT