diff --git a/src/tmltranslator/ctranslator/IntlOperationMEC.java b/src/tmltranslator/ctranslator/IntlOperationMEC.java index 59ad9e66f2e04b334ddf6c2dd35e4abd1b81ddc3..d94d75b18b149882a1f0439dc0f656b7c69ececb 100644 --- a/src/tmltranslator/ctranslator/IntlOperationMEC.java +++ b/src/tmltranslator/ctranslator/IntlOperationMEC.java @@ -54,35 +54,32 @@ public class IntlOperationMEC extends OperationMEC { public IntlOperationMEC( String ctxName, String ID0, String OD0, String BTC ) { name = "InterleaverOperationMEC"; exec_code = TAB + "/*firm instruction*/" + CR + TAB + - "fep_set_qx(&" + ctxName + ", ((FEP_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->q);" + CR + TAB + "/*start execution*/" + CR + TAB + - "fep_start(&" + ctxName + ");" + CR; + "intl_start(&" + ctxName + ");" + CR; init_code ="/***** INIT " + ctxName + " *******/" + CR + - "void init_" + ctxName + "(void){" + CR + TAB + - "fep_ctx_init(&" + ctxName + ", (uint64_t) /*USER TODO: value*/);" + CR + TAB + + "void init_" + ctxName.split("_ctx")[0] + "(void){" + CR + TAB + + "intl_ctx_init(&" + ctxName + ", (uint64_t) /*USER TODO: value*/);" + CR + TAB + "// initialize context" + CR + TAB + - "fep_set_op(&" + ctxName + ", FEP_OP_MOV);" + CR + TAB + - "// X vector configuration => Zk=Y[Xi]" + CR + TAB + - "fep_set_r(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_l(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_bx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_qx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_wx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_tx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_sx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_nx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_mx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_px(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_dx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_vrx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_vix(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "// Operation configuration" + CR + TAB + - "fep_set_sma(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB + - "fep_set_qs(&" + ctxName + ", ((FEP_BUFF_TYPE*)sig[" + OD0 + "].pBuff)->q);" + CR + TAB + - "fep_set_bs(&" + ctxName + ", ((FEP_BUFF_TYPE*)sig[" + OD0 + "].pBuff)->b);" + CR + TAB + + "intl_set_op(&" + ctxName + ", FEP_OP_MOV);" + CR + TAB + + "intl_set_sv( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_arm( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_re( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_se( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_fe( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_pbo( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_pbi( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_widm1( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_biof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_boof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_fz( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_fo( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_iof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_oof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_pof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + + "intl_set_lenm1( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB + "}" + CR; - cleanup_code = "fep_ctx_cleanup(&" + ctxName + ");"; + cleanup_code = "intl_ctx_cleanup(&" + ctxName + ");"; } } //End of class diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java index 20e5133792b7139b5c60c2a75901bb16befa202c..2f3f96e3de86c631b3d43e991e2f19646614a8cb 100755 --- a/src/ui/window/JDialogPortArtifact.java +++ b/src/ui/window/JDialogPortArtifact.java @@ -79,7 +79,8 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi private JButton cancelButton; //Code generation - private JPanel panel3; + private JPanel panel3, panel4, panel5; + private JTabbedPane tabbedPane; private int bufferType = 0; private boolean loadBufferParameters = false; private ArrayList<String> bufferParameters; @@ -133,6 +134,8 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi panel3.setLayout(gridbag2); panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: buffer attributes")); panel3.setPreferredSize(new Dimension(650, 350)); + + tabbedPane = new JTabbedPane(); c1.gridwidth = 1; c1.gridheight = 1; @@ -276,7 +279,12 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi c0.gridwidth = GridBagConstraints.REMAINDER; //end row c0.fill = GridBagConstraints.BOTH; c.add( panel2, c0 ); - c.add( panel3, c0 ); + if( ( bufferType == Buffer.MapperBuffer ) || ( bufferType == Buffer.InterleaverBuffer ) ) { + c.add( tabbedPane, c0 ); + } + else { + c.add( panel3, c0 ); + } c0.gridwidth = 1; c0.gridheight = 1; @@ -326,8 +334,118 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi } private void makeInterleaverBufferPanel( GridBagConstraints c1, GridBagConstraints c2 ) { + + GridBagLayout gridbag2 = new GridBagLayout(); + + panel3 = new JPanel(); + panel3.setLayout(gridbag2); + panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: input buffer attributes")); + panel3.setPreferredSize(new Dimension(650, 350)); + + panel4 = new JPanel(); + panel4.setLayout(gridbag2); + panel4.setBorder(new javax.swing.border.TitledBorder("Code generation: output buffer attributes")); + panel4.setPreferredSize(new Dimension(650, 350)); + + panel5 = new JPanel(); + panel5.setLayout(gridbag2); + panel5.setBorder(new javax.swing.border.TitledBorder("Code generation: Permutation Table attributes")); + panel5.setPreferredSize(new Dimension(650, 350)); + + //Data In panel c2.anchor = GridBagConstraints.LINE_START; - makeMainMemoryBufferPanel( c1, c2 ); + numSamplesTF = new JTextField( numSamples, 5 ); + panel3.add( new JLabel( "Number of symbols = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel3.add( numSamplesTF, c1 ); + // + baseAddressTF = new JTextField( baseAddress, 5 ); + panel3.add( new JLabel( "Base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel3.add( baseAddressTF, c1 ); + // + bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 ); + panel3.add( new JLabel( "Number of bits/symbol = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel3.add( bitsPerSymbolTF, c1 ); + // + symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 ); + panel3.add( new JLabel( "Symbol base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel3.add( symbolBaseAddressTF, c1 ); + // + symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) ); + panel3.add( new JLabel( "Symmetrical value = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + if( symmetricalValue != null ) { + symmetricalValueCB.setSelectedItem( symmetricalValue ); + } + panel3.add( symmetricalValueCB, c1 ); + + //Data Out panel + c2.anchor = GridBagConstraints.LINE_START; + numSamplesTF = new JTextField( numSamples, 5 ); + panel4.add( new JLabel( "Number of symbols = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( numSamplesTF, c1 ); + // + baseAddressTF = new JTextField( baseAddress, 5 ); + panel4.add( new JLabel( "Base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( baseAddressTF, c1 ); + // + bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 ); + panel4.add( new JLabel( "Number of bits/symbol = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( bitsPerSymbolTF, c1 ); + // + symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 ); + panel4.add( new JLabel( "Symbol base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( symbolBaseAddressTF, c1 ); + // + symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) ); + panel4.add( new JLabel( "Symmetrical value = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + if( symmetricalValue != null ) { + symmetricalValueCB.setSelectedItem( symmetricalValue ); + } + panel4.add( symmetricalValueCB, c1 ); + + //Permutation Table panel + c2.anchor = GridBagConstraints.LINE_START; + numSamplesTF = new JTextField( numSamples, 5 ); + panel5.add( new JLabel( "Number of symbols = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( numSamplesTF, c1 ); + // + baseAddressTF = new JTextField( baseAddress, 5 ); + panel5.add( new JLabel( "Base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( baseAddressTF, c1 ); + // + bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 ); + panel5.add( new JLabel( "Number of bits/symbol = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( bitsPerSymbolTF, c1 ); + // + symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 ); + panel5.add( new JLabel( "Symbol base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( symbolBaseAddressTF, c1 ); + // + symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) ); + panel5.add( new JLabel( "Symmetrical value = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + if( symmetricalValue != null ) { + symmetricalValueCB.setSelectedItem( symmetricalValue ); + } + panel5.add( symmetricalValueCB, c1 ); + + tabbedPane.addTab( "Data In", panel3 ); + tabbedPane.addTab( "Data Out", panel4 ); + tabbedPane.addTab( "Permutation Table", panel5 ); + tabbedPane.setSelectedIndex(0); } private void makeAdaifBufferPanel( GridBagConstraints c1, GridBagConstraints c2 ) { @@ -337,9 +455,27 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi private void makeMapperBufferPanel( GridBagConstraints c1, GridBagConstraints c2 ) { + GridBagLayout gridbag2 = new GridBagLayout(); + + panel3 = new JPanel(); + panel3.setLayout(gridbag2); + panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: input buffer attributes")); + panel3.setPreferredSize(new Dimension(650, 350)); + + panel4 = new JPanel(); + panel4.setLayout(gridbag2); + panel4.setBorder(new javax.swing.border.TitledBorder("Code generation: output buffer attributes")); + panel4.setPreferredSize(new Dimension(650, 350)); + + panel5 = new JPanel(); + panel5.setLayout(gridbag2); + panel5.setBorder(new javax.swing.border.TitledBorder("Code generation: Look Up Table attributes")); + panel5.setPreferredSize(new Dimension(650, 350)); + + //Data In panel c2.anchor = GridBagConstraints.LINE_START; numSamplesTF = new JTextField( numSamples, 5 ); - panel3.add( new JLabel( "Number of samples = "), c2 ); + panel3.add( new JLabel( "Number of symbols = "), c2 ); c1.gridwidth = GridBagConstraints.REMAINDER; panel3.add( numSamplesTF, c1 ); // @@ -365,6 +501,71 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi symmetricalValueCB.setSelectedItem( symmetricalValue ); } panel3.add( symmetricalValueCB, c1 ); + + //Data Out panel + c2.anchor = GridBagConstraints.LINE_START; + numSamplesTF = new JTextField( numSamples, 5 ); + panel4.add( new JLabel( "Number of symbols = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( numSamplesTF, c1 ); + // + baseAddressTF = new JTextField( baseAddress, 5 ); + panel4.add( new JLabel( "Base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( baseAddressTF, c1 ); + // + bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 ); + panel4.add( new JLabel( "Number of bits/symbol = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( bitsPerSymbolTF, c1 ); + // + symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 ); + panel4.add( new JLabel( "Symbol base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel4.add( symbolBaseAddressTF, c1 ); + // + symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) ); + panel4.add( new JLabel( "Symmetrical value = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + if( symmetricalValue != null ) { + symmetricalValueCB.setSelectedItem( symmetricalValue ); + } + panel4.add( symmetricalValueCB, c1 ); + + //Look Up Table panel + c2.anchor = GridBagConstraints.LINE_START; + numSamplesTF = new JTextField( numSamples, 5 ); + panel5.add( new JLabel( "Number of symbols = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( numSamplesTF, c1 ); + // + baseAddressTF = new JTextField( baseAddress, 5 ); + panel5.add( new JLabel( "Base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( baseAddressTF, c1 ); + // + bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 ); + panel5.add( new JLabel( "Number of bits/symbol = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( bitsPerSymbolTF, c1 ); + // + symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 ); + panel5.add( new JLabel( "Symbol base address = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + panel5.add( symbolBaseAddressTF, c1 ); + // + symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) ); + panel5.add( new JLabel( "Symmetrical value = "), c2 ); + c1.gridwidth = GridBagConstraints.REMAINDER; + if( symmetricalValue != null ) { + symmetricalValueCB.setSelectedItem( symmetricalValue ); + } + panel5.add( symmetricalValueCB, c1 ); + + tabbedPane.addTab( "Data In", panel3 ); + tabbedPane.addTab( "Data Out", panel4 ); + tabbedPane.addTab( "Look Up Table", panel5 ); + tabbedPane.setSelectedIndex(0); } private void makeMainMemoryBufferPanel( GridBagConstraints c1, GridBagConstraints c2 ) { @@ -443,39 +644,53 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi switch( bufferType ) { case Buffer.FepBuffer: panel3.removeAll(); + tabbedPane.removeAll(); makeFepBufferPanel( c1, c2 ); panel3.revalidate(); panel3.repaint(); + tabbedPane.add( "Data", panel3 ); break; case Buffer.MapperBuffer: - panel3.removeAll(); + cleanPanels(); makeMapperBufferPanel( c1, c2 ); - panel3.revalidate(); - panel3.repaint(); + revalidateAndRepaintPanels(); + tabbedPane.addTab( "Data In", panel3 ); + tabbedPane.addTab( "Data Out", panel4 ); + tabbedPane.addTab( "Look Up Table", panel5 ); + tabbedPane.setSelectedIndex(0); break; case Buffer.AdaifBuffer: panel3.removeAll(); + tabbedPane.removeAll(); makeAdaifBufferPanel( c1, c2 ); panel3.revalidate(); panel3.repaint(); + tabbedPane.add( "Data", panel3 ); break; - case Buffer.InterleaverBuffer: - panel3.removeAll(); + case Buffer.InterleaverBuffer: + cleanPanels(); makeInterleaverBufferPanel( c1, c2 ); - panel3.revalidate(); - panel3.repaint(); + revalidateAndRepaintPanels(); + tabbedPane.addTab( "Data In", panel3 ); + tabbedPane.addTab( "Data Out", panel4 ); + tabbedPane.addTab( "Permutation Table", panel5 ); + tabbedPane.setSelectedIndex(0); break; case Buffer.MainMemoryBuffer: panel3.removeAll(); + tabbedPane.removeAll(); makeMainMemoryBufferPanel( c1, c2 ); panel3.revalidate(); panel3.repaint(); + tabbedPane.add( "Data", panel3 ); break; default: //the main memory buffer panel3.removeAll(); + tabbedPane.removeAll(); makeFepBufferPanel( c1, c2 ); panel3.revalidate(); panel3.repaint(); + tabbedPane.add( "Data", panel3 ); break; } } @@ -754,4 +969,22 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi return params; } + private void cleanPanels() { + panel3.removeAll(); + panel4.removeAll(); + panel5.removeAll(); + tabbedPane.removeAll(); + } + + private void revalidateAndRepaintPanels() { + panel3.revalidate(); + panel3.repaint(); + panel4.revalidate(); + panel4.repaint(); + panel5.revalidate(); + panel5.repaint(); + /*tabbedPaned.revalidate(); + tabbePaned.repaint();*/ + } + } //End of class