命名空间Python包(no __init__.py)和常规Python包(有__init__.py)之间的区别是什么,特别是当__init__.py常规包为空时?
我很好奇,因为最近我忘了制作__init__.py我制作的包装,我从来没有注意到任何问题.实际上,它们似乎与常规包装相同.
编辑:仅支持Python 3.3的命名空间包(参见PEP 420),所以很自然地,这个问题仅适用于Python 3.
在模拟中,这是完美的.这是检查可合成代码的零的最佳方法.会产生什么资源?
signal vector_slv : std_logic_vector(2048 downto 0);
...
if (vector_slv = (vector_slv'range => '0')) then
-- do something...
Run Code Online (Sandbox Code Playgroud)
考虑到h/w映射(具有最佳资源利用率),是否有任何其他最佳方式来实现此解决方案.
我会更了解所使用的资源.
我希望能够将多个通道指定为泛型,并使用它来指定包含更多参数的数组的范围。编译时,我的 Aldec 编译告诉我在接口列表完成之前不能引用 'num_chan'。
有谁知道实现这一目标的方法?
ENTITY deframer IS
generic (
num_chan : integer := 2;
ch_low : int_arr(num_chan-1 downto 0) := ( 1, 189);
ch_hi : int_arr(num_chan-1 downto 0) := (127, 189));
Run Code Online (Sandbox Code Playgroud) 我有一个VHDL包,它定义了一个函数(前向声明)和一个常量.常量的值由该函数计算,该函数的主体位于包体中.
截至目前,ModelSim/QuestaSim是唯一不喜欢此代码的工具.它需要2个包,因此在常量声明之前解析了主体.
package test is
function mytest(param : boolean ) return boolean;
constant value : boolean := mytest(TRUE);
end package;
package body test is
function mytest(param : boolean ) return boolean is
begin
return not param;
end function;
end package body;
Run Code Online (Sandbox Code Playgroud)
这在VHDL和其他工具中是不允许使用宽松的解析规则,还是ModelSim问题?
什么是使不同变量引用相同值的好方法,同时仍允许直接操作,例如*在值上?
所需代码的示例能够执行以下操作:
a = <Reference to integer 2>
b = a
print(a * b) # Should show 4
<a update (not with assign using =) with reference to integer 3>
print(a * b) # Should show 9
Run Code Online (Sandbox Code Playgroud)
一个不太理想的解决方案是使用容器作为值,如命名空间,列表,字典等,但这需要引用.value如下所示的属性,因此不太需要:
import types
a = types.SimpleNamespace(value = 2)
b = a
print(a.value * b.value) # Should show 4
a.value = 3
print(a.value * b.value) # Should show 9
Run Code Online (Sandbox Code Playgroud)
封装值的好方法是什么,所以直接操作仍然可行?
用于移位操作和二进制按位操作的 Python文档说参数必须是整数,但是下面的表达式在没有错误的情况下进行求值,但是为<<和得到奇数结果>>.
&在使用布尔参数时,是否还有其他地方可以查找文档等,还是对评估和结果有一些很好的解释?
码:
# Python ver. 3.3.2
def tryout(s):
print(s + ':', eval(s), type(eval(s)))
tryout('True & False')
tryout('True | False')
tryout('True ^ False')
tryout('~ True')
tryout('~ False')
tryout('True << True')
tryout('False >> False')
Run Code Online (Sandbox Code Playgroud) 下面是一个生成器,可以创建由多个字符串中的一个字符组成的所有组合:
('ab', 'cd', 'ef') => 'ace', 'acf', 'ade', 'adf', 'bce', 'bcf', 'bde', 'bdf'.
Run Code Online (Sandbox Code Playgroud)
但是,我想知道这是否可以在更多的Pythonic中完成.
# Example input data
t = ('ab', 'cd', 'ef')
# Recursive generator
def comb(t):
if t:
for c in t[0]:
for s in comb(t[1:]):
yield c + s
else:
yield ''
# Test of generator
for r in comb(t):
print(r)
Run Code Online (Sandbox Code Playgroud) 使用组合逻辑在VHDL/Verilog中驱动模块的输出是一种很好的设计实践吗?
是否可以直接在组合块中使用模块输入,并使用该组合块的输出来驱动同一模块中的另一个顺序块?
我有一个具有以下结构的代码
-- synthesis translate_off
... some sort of memory implementation/coding
-- synthesis translate_on
Run Code Online (Sandbox Code Playgroud)
如果删除这段代码会影响我FPGA implementation代码的最终输出,请告诉我.
谢谢,最好的问候,法拉斯
我是VHDL编码的初学者.我正在尝试使用VHDL实现倍频器.我已经实现了分频器,但倍频并不那么容易.请提出实施该建议的想法.
vhdl ×7
python ×4
fpga ×2
python-3.x ×2
modelsim ×1
package ×1
python-3.3 ×1
synthesis ×1
verilog ×1