the trouble i have with flen vs len is that there are two different meanings: one is "the minimum width required to hold an expression" (which is what flen does) and the other is "the maximum width can be held" (which could be len and would only ever apply to a Signal)

also, there is __getitem__, there could (and maybe should) be __iter__ and __reversed__, therefore there also should be __len__. does it make sense for an object that can __getitem__ to not be able to __len__?

davidc__, unreadable verilog output is a serious problem: there are plenty of cases when you want to look at it during debugging. and I'm not sure that duplicating lots of if/case like that won't break some synthesizer optimizations.

lekernel: well. you can decide whether ints and values should be as similar as possible (and have fiter, flen, flsice, freversed) or accept that they are different and offer the python notation for the cases where you absolutely know that you are dealing with a Value. ;)