protected override void DoCommandAction()
        {
            VHDLFile union = new VHDLFile("union_interface");

            foreach (string vhdlFile in Modules)
            {
                VHDLParser p = new VHDLParser(vhdlFile);
                foreach (VHDLParserEntity entity in p.GetEntities())
                {
                    foreach (HDLEntitySignal signal in entity.InterfaceSignals)
                    {
                        int width = signal.MSB - signal.LSB + 1;
                        if (!union.Entity.HasSignal(signal.SignalName))
                        {
                            union.Entity.Add(signal.SignalName, width, Objects.PortMapper.MappingKind.External);
                            union.Entity.SetDirection(signal.SignalName, FPGA.FPGATypes.GetPortDirectionFromString(signal.SignalDirection));
                        }
                        else
                        {
                            union.Entity.SetSignalWidth(signal.SignalName, Math.Max(width, union.Entity.GetSignalWidth(signal.SignalName)));
                        }
                    }
                }
            }

            OutputManager.WriteOutput("entity union_interface is port (");
            OutputManager.WriteOutput(union.Entity.ToString());
            OutputManager.WriteOutput("end union_interface;");
        }
        protected sealed override void DoCommandAction()
        {
            VHDLFile vhdlFile = new VHDLFile(EntityName);

            InstantiationFilter = Regex.Replace(InstantiationFilter, "\\\"", "");

            foreach (LibElemInst inst in LibraryElementInstanceManager.Instance.GetAllInstantiations().Where(i => Regex.IsMatch(i.InstanceName, InstantiationFilter)))
            {
                LibraryElement libElement = Objects.Library.Instance.GetElement(inst.LibraryElementName);

                // add each component once
                if (!vhdlFile.HasComponent(libElement.PrimitiveName))
                {
                    vhdlFile.Add(new VHDLComponent(libElement));
                }

                vhdlFile.Add(new VHDLInstantiation(vhdlFile, inst, libElement, this));
            }

            // call base class implementation
            PrintVHDLCode(vhdlFile);
        }
Example #3
0
 protected override void PrintVHDLCode(VHDLFile vhdlFile)
 {
     // onle for ISE insert component declarations, in Vivado we use LUT6 primitves, and do not need component declartation
     OutputManager.WriteVHDLOutput(vhdlFile.GetSubsystem(FPGA.FPGA.Instance.BackendType == FPGA.FPGATypes.BackendType.ISE));
 }
 protected override void PrintVHDLCode(VHDLFile vhdlFile)
 {
     OutputManager.WriteVHDLOutput(vhdlFile.GetSubsystemInstantiation());
 }
 protected abstract void PrintVHDLCode(VHDLFile vhdlFile);