package synthesijer.hdl; import java.util.ArrayList; import java.util.Optional; import synthesijer.SynthesijerUtils; import synthesijer.hdl.HDLPort; import synthesijer.hdl.expr.HDLValue; import synthesijer.hdl.sequencer.SequencerState; public class HDLInstanceRef implements HDLVariable{ private final HDLModule module; private final String name; private final HDLModule target; private final ArrayList<HDLPort> ports = new ArrayList<>(); public HDLInstanceRef(HDLModule m, HDLModule target, String name){ this.module = m; this.name = name; this.target = target; for(HDLPort p: target.getPorts()){ if(p != target.getSysClk() && p != target.getSysReset()){ // add connections for ports except sysClk and sysReset HDLPort.DIR d; if(p.getDir() == HDLPort.DIR.OUT){ d = HDLPort.DIR.IN; }else if(p.getDir() == HDLPort.DIR.IN){ d = HDLPort.DIR.OUT; }else{ d = HDLPort.DIR.INOUT; } ports.add(m.newPort(name + "_" + p.getName(), d, p.getType())); } } } @Override public String getName(){ return name; } public Optional<HDLPort> getPortByPostfix(String key){ for(HDLPort p: ports){ if(p.getName().equals(name + key)){ return Optional.of(p); } } return Optional.empty(); } @Override public void setAssignForSequencer(HDLSequencer s, HDLExpr expr){} @Override public void setAssignForSequencer(HDLSequencer s, HDLExpr cond, HDLExpr expr){} @Override public void setAssign(SequencerState s, HDLExpr expr){} @Override public void setAssign(SequencerState s, int count, HDLExpr expr){} @Override public void setAssign(SequencerState s, HDLExpr cond, HDLExpr expr){} @Override public void setResetValue(HDLExpr s){} @Override public void setDefaultValue(HDLExpr s){} @Override public String getVHDL() { // TODO Auto-generated method stub return null; } @Override public String getVerilogHDL() { // TODO Auto-generated method stub return null; } @Override public HDLExpr getResultExpr() { // TODO Auto-generated method stub return null; } @Override public HDLSignal[] getSrcSignals() { // TODO Auto-generated method stub return null; } @Override public HDLType getType() { // TODO Auto-generated method stub return null; } @Override public void accept(HDLTreeVisitor v) { v.visitHDLInstanceRef(this); } }