1 package edu.berkeley.slipway.mpar;
2 import com.atmel.fpslic.*;
4 import java.awt.event.*;
5 import byucc.edif.tools.merge.*;
9 import edu.berkeley.slipway.*;
10 import edu.berkeley.abits.*;
11 import com.atmel.fpslic.*;
12 import static com.atmel.fpslic.FpslicConstants.*;
13 import static edu.berkeley.slipway.mpar.PhysicalFpslic.*;
15 public class Visualization extends Frame implements MouseMotionListener, MouseListener {
16 public void mouseEntered(MouseEvent e) { }
17 public void mouseExited(MouseEvent e) { }
18 public void mousePressed(MouseEvent e){ }
19 public void mouseReleased(MouseEvent e) { }
20 public void mouseDragged(MouseEvent e) { }
21 public void mouseClicked(MouseEvent e) {
22 MPARDemo.temperature += 0.05;
24 public void mouseMoved(MouseEvent e) {
25 PhysicalFpslic.badx = (e.getX() / CELLSEP)-1;
26 PhysicalFpslic.bady = (getHeight()-e.getY()) / CELLSEP;
29 public static final Color MOVED = new Color(0x88, 0x88, 0x88);
30 public static final Color PLAIN = new Color(0xff, 0x88, 0x88);
31 public static final Color EMPTY = new Color(0x88, 0xff, 0x88);
33 private final PhysicalFpslic pd;
35 public Visualization(PhysicalFpslic pd) {
37 setSize(CELLSEP*(pd.width+2), CELLSEP*(pd.height+2));
39 setSize(CELLSEP*(pd.width+2), CELLSEP*(pd.height+2));
40 addMouseListener(this);
41 addMouseMotionListener(this);
44 public void draw(Placement placement, Routing routing, boolean drawRouting) {
45 Graphics2D g = (Graphics2D)getGraphics();
46 g.translate(CELLSEP,CELLSEP);
47 g.setColor(Color.white);
48 g.fillRect(-CELLSEP, -CELLSEP, getWidth(), getHeight());
49 g.setColor(Color.black);
50 g.drawString("temperature = " + MPARDemo.temperature, 10, 0);
51 g.drawString("congestion = " + MPARDemo.congestion, 10, 15);
52 g.drawString("slack = " + (-1 * MPARDemo.timingpenalty), 10, 30);
53 for(int x=0; x<pd.width; x++)
54 for(int y=0; y<pd.height; y++) {
55 double d = Math.sqrt( (PhysicalFpslic.badx-x)*
56 (PhysicalFpslic.badx-x)+
57 (PhysicalFpslic.bady-y)*
58 (PhysicalFpslic.bady-y) );
59 d = (PhysicalFpslic.badr - d);
61 d /= PhysicalFpslic.badr;
62 int a = 255 - ((int)(255*d));
63 g.setColor(new Color(a, a, a));
64 g.fillRect(( x*CELLSEP - (PLANESEP*3)),
65 ((pd.height * CELLSEP) - (y*CELLSEP + (PLANESEP*3))),
72 for(int x=0; x<pd.width; x++)
73 for(int y=0; y<pd.height; y++) {
74 if (placement.cellToNode(pd.getCell(x,y)) != null)
78 g.fillRect(( x*CELLSEP)+2,
79 ((pd.height * CELLSEP) - (y*CELLSEP))+2,
81 CELLSEP-5*PLANESEP-2);