Re: [myhdl-list] Re: toVerilog dynamic top level name
Brought to you by:
jandecaluwe
From: Tom D. <td...@di...> - 2005-09-02 20:34:13
|
Jan Decaluwe wrote: > Ok - so we need another way to parametrize toVerilog's behavior. > Note that until now I have been able to avoid "options" to > the convertor, but at some point that may become unavoidable. > So we need a general way support options, and "name" would > be the first supported option. > > One could think of using function attributes, e.g. > toVerilog.name = "topname" > However, with normal functions, this has a similar problem, > as they have non-hidden attributes that we don't want to > touch, e.g. func_name. > > What we would do is to create a ToVerilogConvertor class, > that defines the supported option names as attributes. > It would have a __call__ interface and toVerilog would > become an instance of that class, so that its behavior > would remain as it is now (except for the difference in > instance name inference, as discussed earlier.) > > An advantage would be that the supported attributes > can be managed attributes (properties) so that we can > do any type of checking on them. Another advantage > (in the future) is that a user could create other > convertor instances with the options set to other > values, e.g. toVerilogForXilinx. > > Back to our original issue: if as user wants set > the instance name to another value than the default, > the usage model would be: > > toVerilog.name = "myInstanceName" > inst = toVerilog(func, *args, **kwargs) > > I'm inclined to implement it like that - so hurry > with feedback if you want to stop me :-) This would work, although it seems like logically a class is better for that. I wouldn't think to set an attribute to a function, even though python supports it. I am OK with it though, would get used to it, and probably learn and use that feature of python in other circumstances. Let me throw in a couple more ideas: a 2nd function, inst = toVerilogNamed(func,name,*args,**kwargs) or just changing toVerilog to that format, throwing backward compatibility to the wind. You could allow "" or None to use the default as it is now. Tom |