public override void Establish(IAutoBinder binder) { if (_realized) { return; } _addrBits = MathExt.CeilLog2(_array.ArrayObj.Length); _dataBits = Marshal.SerializeForHW(_array.ElementType.GetSampleInstance()).Size; _clkI = (SLSignal)binder.GetSignal(EPortUsage.Clock, "Clk", null, null); _dataOutI = (SLVSignal)binder.GetSignal(EPortUsage.Default, "memIf_dataOut", null, StdLogicVector._0s(_dataBits)); _addrI = (SLVSignal)binder.GetSignal(EPortUsage.Default, "memIf_addr", null, StdLogicVector._0s(_addrBits)); _clk = _clkI.Descriptor; _addr = _addrI.Descriptor; _dataOut = _dataOutI.Descriptor; if (NeedWriteAccess) { _wrEnI = (SLSignal)binder.GetSignal(EPortUsage.Default, "memIf_wrEn", null, StdLogic._0); _dataInI = (SLVSignal)binder.GetSignal(EPortUsage.Default, "memIf_dataIn", null, StdLogicVector._0s(_dataBits)); _wrEn = _wrEnI.Descriptor; _dataIn = _dataInI.Descriptor; } var memIfBuilder = new MemIfBuilder(this); var memIfAlg = memIfBuilder.GetAlgorithm(); memIfAlg.Name = "MemIf"; binder.CreateProcess(Process.EProcessKind.Triggered, memIfAlg, _clk); _realized = true; }
public override void Establish(IAutoBinder binder) { if (_realized) return; _addrBits = MathExt.CeilLog2(_array.ArrayObj.Length); _dataBits = Marshal.SerializeForHW(_array.ElementType.GetSampleInstance()).Size; _clkI = (SLSignal)binder.GetSignal(EPortUsage.Clock, "Clk", null, null); _dataOutI = (SLVSignal)binder.GetSignal(EPortUsage.Default, "memIf_dataOut", null, StdLogicVector._0s(_dataBits)); _addrI = (SLVSignal)binder.GetSignal(EPortUsage.Default, "memIf_addr", null, StdLogicVector._0s(_addrBits)); _clk = _clkI.Descriptor; _addr = _addrI.Descriptor; _dataOut = _dataOutI.Descriptor; if (NeedWriteAccess) { _wrEnI = (SLSignal)binder.GetSignal(EPortUsage.Default, "memIf_wrEn", null, StdLogic._0); _dataInI = (SLVSignal)binder.GetSignal(EPortUsage.Default, "memIf_dataIn", null, StdLogicVector._0s(_dataBits)); _wrEn = _wrEnI.Descriptor; _dataIn = _dataInI.Descriptor; } var memIfBuilder = new MemIfBuilder(this); var memIfAlg = memIfBuilder.GetAlgorithm(); memIfAlg.Name = "MemIf"; binder.CreateProcess(Process.EProcessKind.Triggered, memIfAlg, _clk); _realized = true; }